datasource db { provider = "postgresql" url = env("DATABASE_URL") } generator client { provider = "prisma-client-js" } model User { id Int @id @default(autoincrement()) username String password String? avatar String? token String administrator Boolean @default(false) superAdmin Boolean @default(false) systemTheme String @default("system") embedTitle String? embedColor String @default("#2f3136") embedSiteName String? @default("{image.file} • {user.name}") ratelimit DateTime? totpSecret String? domains String[] oauth OAuth[] images Image[] urls Url[] Invite Invite[] } enum ImageFormat { UUID DATE RANDOM NAME } model Image { id Int @id @default(autoincrement()) file String mimetype String @default("image/png") created_at DateTime @default(now()) expires_at DateTime? maxViews Int? views Int @default(0) favorite Boolean @default(false) embed Boolean @default(false) password String? invisible InvisibleImage? format ImageFormat @default(RANDOM) user User? @relation(fields: [userId], references: [id], onDelete: SetNull) userId Int? } model InvisibleImage { id Int @id @default(autoincrement()) invis String @unique imageId Int @unique image Image @relation(fields: [imageId], references: [id], onDelete: Cascade) } model Url { id String @id @unique destination String vanity String? created_at DateTime @default(now()) maxViews Int? views Int @default(0) invisible InvisibleUrl? user User? @relation(fields: [userId], references: [id], onDelete: SetNull) userId Int? } model InvisibleUrl { id Int @id @default(autoincrement()) invis String @unique urlId String @unique url Url @relation(fields: [urlId], references: [id], onDelete: Cascade) } model Stats { id Int @id @default(autoincrement()) created_at DateTime @default(now()) data Json } model Invite { id Int @id @default(autoincrement()) code String @unique created_at DateTime @default(now()) expires_at DateTime? used Boolean @default(false) createdBy User @relation(fields: [createdById], references: [id], onDelete: Cascade) createdById Int } model OAuth { id Int @id @default(autoincrement()) provider OauthProviders user User @relation(fields: [userId], references: [id], onDelete: Cascade) userId Int username String oauthId String token String refresh String? @@unique([provider, oauthId]) } enum OauthProviders { DISCORD GITHUB GOOGLE }