Files
chad/server/prisma/schema.prisma
2026-05-29 04:28:09 +06:00

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)
}