80 lines
2.1 KiB
Plaintext
80 lines
2.1 KiB
Plaintext
datasource db {
|
|
provider = "sqlite"
|
|
}
|
|
|
|
generator client {
|
|
provider = "prisma-client"
|
|
output = "./generated-client"
|
|
}
|
|
|
|
model User {
|
|
username String @id @unique
|
|
password String
|
|
displayName String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
Attachments Attachment[]
|
|
Session Session[]
|
|
UserPreferences UserPreferences?
|
|
Messages Message[]
|
|
Channels Channel[]
|
|
}
|
|
|
|
model Session {
|
|
id String @id
|
|
userId String
|
|
expiresAt DateTime
|
|
|
|
user User @relation(references: [username], fields: [userId], onDelete: Cascade)
|
|
}
|
|
|
|
model UserPreferences {
|
|
username String @id @unique
|
|
toggleInputHotkey String? @default("")
|
|
toggleOutputHotkey String? @default("")
|
|
|
|
user User @relation(references: [username], fields: [username], onDelete: Cascade)
|
|
}
|
|
|
|
model Attachment {
|
|
id String @id @default(uuid())
|
|
username String?
|
|
name String
|
|
mimetype String
|
|
size Int
|
|
createdAt DateTime @default(now())
|
|
|
|
user User? @relation(references: [username], fields: [username], onDelete: Cascade)
|
|
message MessageAttachment[]
|
|
}
|
|
|
|
model Message {
|
|
id String @id @default(uuid())
|
|
text String
|
|
senderUsername String?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
sender User? @relation(references: [username], fields: [senderUsername], onDelete: SetNull)
|
|
attachments MessageAttachment[]
|
|
}
|
|
|
|
model MessageAttachment {
|
|
messageId String
|
|
attachmentId String
|
|
|
|
message Message @relation(fields: [messageId], references: [id])
|
|
attachment Attachment @relation(fields: [attachmentId], references: [id])
|
|
|
|
@@id([messageId, attachmentId])
|
|
}
|
|
|
|
model Channel {
|
|
id String @id @default(uuid())
|
|
ownerUsername String?
|
|
name String
|
|
persistent Boolean
|
|
|
|
owner User? @relation(references: [username], fields: [ownerUsername], onDelete: Cascade)
|
|
} |