file-uploader/prisma/schema.prisma
2024-08-29 06:24:27 -04:00

84 lines
2.1 KiB
Text

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
}