datasource db { provider = "mysql" url = env("DATABASE_URL") } generator client { provider = "prisma-client-js" } model User { id Int @id @default(autoincrement()) username String @unique email String @unique password String totp String? role Role createdAt DateTime @default(now()) lastSeen DateTime @default(now()) settings UserSettings? // STORED AS MEGABYTES !! maxUploadMB Int @default(100) uploads Upload[] sessions Session[] apiKeys APIKey[] } model Session { id String @id @unique user User @relation(fields: [userId], references: [id]) userId Int authorized Boolean createdAt DateTime @default(now()) expiresAt DateTime remoteAddress String? } model UserSettings { id Int @id @default(autoincrement()) user User @relation(fields: [userId], references: [id]) userId Int @unique newPostsPublic Boolean @default(true) linkToRaw Boolean @default(false) embedTitle String @default("{{file}}") embedDescription String @default("Uploaded by {{username}} at {{time}}") embedColor Int @default(3159110) } model Upload { id String @id uploader User @relation(fields: [uploaderId], references: [id]) uploaderId Int fileName String @db.LongText internalName String @db.LongText size Int public Boolean @default(true) uploaded DateTime @default(now()) thumbnail Thumbnail? } model APIKey { id String @id user User @relation(fields: [userId], references: [id]) userId Int createdAt DateTime @default(now()) expiresAt DateTime permissions Int } model Thumbnail { id Int @id @default(autoincrement()) upload Upload @relation(fields: [uploadId], references: [id]) uploadId String @unique fileName String @db.LongText } enum Role { ADMINISTRATOR USER BANNED }