2024.10.18: exalidraw를 drawBoard로, ysiwyg을 Note로 변경하였습니다.
DB를 다룰 때 entity는 대문자로 끊기로 합니다.
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"