2024.10.18: exalidraw를 drawBoard로, ysiwyg을 Note로 변경하였습니다.

DB를 다룰 때 entity는 대문자로 끊기로 합니다.

https://easyrd.dev/

https://dbdiagram.io/d/Code-Sync-Schema-67208f78b4216d5a288efd5a

// Use DBML to define your database structure
// Docs: <https://dbml.dbdiagram.io/docs>

Enum RoomStatus {
  waiting
  running
  destroying
  closed
}

Table Users {
  pk number [primary key]
  username string
  email string [not null, unique]
  hashedPassword string
  createdAt Date
  deletedAt Date
}

Table UserConversationDefaults {
  pk number [primary key]
  userPk number [not null, unique]
  isNoteShared boolean [default: false]
  isDrawBoardShared boolean [default: false]
  isChattingShared boolean [default: false]
  canShared boolean [default: false]
}

Table Conversations {
  pk number [primary key]
  creatorPk number [not null]
  participantPk number [not null]
  dataPk number [not null]
  title string [not null]
  startedAt Date [not null]
  finishedAt Date // Modifiable based on finished_at 
  deletedAt Date [default: null]
}

Table ConversationDatas {
  pk number [primary key]
  voiceUrl string
  isVoiceShared boolen
  noteUrl string
  isNoteShared boolean
  drawBoardUrl string
  isDrawBoardShared boolean
  chattingUrl string
  isChattingShared boolean
  canShared boolean
  uuid string
  shareUuid string
}

Table Chatting {
  createdAt Date
  creatorPk number
  content string
}

// For websocket connection
Table Room {
  roomId string
  creatorPk number [not null]
  participantPk number [not null]
}

Ref: "Users"."pk" < "Conversations"."participantPk"

Ref: "Users"."pk" < "Conversations"."creatorPk"

Ref: "Users"."pk" - "UserConversationDefaults"."userPk"

Ref: "Conversations"."dataPk" - "ConversationDatas"."pk"