datasource db { provider = "sqlite" } generator client { provider = "prisma-client" output = "./generated-client" } model User { id String @id @default(cuid()) username String @unique password String displayName String createdAt DateTime @default(now()) updatedAt DateTime @updatedAt Session Session[] UserPreferences UserPreferences? Messages Message[] } model Session { id String @id userId String expiresAt DateTime user User @relation(references: [id], fields: [userId], onDelete: Cascade) @@index([userId]) } model UserPreferences { userId String @id @unique toggleInputHotkey String? @default("") toggleOutputHotkey String? @default("") user User @relation(references: [id], fields: [userId], onDelete: Cascade) } model Attachment { id String @id @default(uuid()) name String mimetype String size Int createdAt DateTime @default(now()) message MessageAttachment[] } model Message { id String @id @default(uuid()) text String senderId String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt sender User? @relation(references: [id], fields: [senderId], 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()) name String persistent Boolean }