file-uploader/prisma/schema.prisma

85 lines
2.1 KiB
Text
Raw Permalink Normal View History

2024-03-24 06:18:11 +00:00
datasource db {
2024-05-01 01:30:05 +00:00
provider = "mysql"
url = env("DATABASE_URL")
2024-03-24 06:18:11 +00:00
}
generator client {
2024-05-01 01:30:05 +00:00
provider = "prisma-client-js"
2024-03-24 06:18:11 +00:00
}
2024-03-24 06:36:41 +00:00
model User {
2024-05-01 01:30:05 +00:00
id Int @id @default(autoincrement())
username String @unique
email String @unique
password String
2024-08-02 09:05:10 +00:00
totp String?
2024-07-06 03:31:58 +00:00
role Role
2024-05-01 01:30:05 +00:00
createdAt DateTime @default(now())
lastSeen DateTime @default(now())
settings UserSettings?
// STORED AS MEGABYTES !!
maxUploadMB Int @default(100)
uploads Upload[]
sessions Session[]
2024-08-02 09:05:10 +00:00
apiKeys APIKey[]
2024-04-02 04:08:49 +00:00
}
model Session {
2024-05-01 01:30:05 +00:00
id String @id @unique
user User @relation(fields: [userId], references: [id])
userId Int
authorized Boolean
createdAt DateTime @default(now())
expiresAt DateTime
remoteAddress String?
2024-03-24 06:36:41 +00:00
}
model UserSettings {
2024-05-01 01:30:05 +00:00
id Int @id @default(autoincrement())
user User @relation(fields: [userId], references: [id])
userId Int @unique
2024-03-24 06:36:41 +00:00
2024-07-06 03:31:58 +00:00
newPostsPublic Boolean @default(true)
2024-05-01 01:30:05 +00:00
linkToRaw Boolean @default(false)
2024-04-29 13:44:00 +00:00
2024-05-01 01:30:05 +00:00
embedTitle String @default("{{file}}")
embedDescription String @default("Uploaded by {{username}} at {{time}}")
2024-07-06 04:04:38 +00:00
embedColor Int @default(3159110)
2024-03-24 06:36:41 +00:00
}
model Upload {
2024-05-01 01:30:05 +00:00
id String @id
uploader User @relation(fields: [uploaderId], references: [id])
uploaderId Int
2024-03-24 06:36:41 +00:00
2024-08-29 10:24:27 +00:00
fileName String @db.LongText
internalName String @db.LongText
2024-07-06 08:20:53 +00:00
size Int
2024-08-29 10:24:27 +00:00
public Boolean @default(true)
uploaded DateTime @default(now())
thumbnail Thumbnail?
2024-03-24 06:36:41 +00:00
}
2024-07-06 03:31:58 +00:00
2024-08-02 09:05:10 +00:00
model APIKey {
id String @id
user User @relation(fields: [userId], references: [id])
userId Int
createdAt DateTime @default(now())
expiresAt DateTime
permissions Int
}
2024-08-29 10:24:27 +00:00
model Thumbnail {
id Int @id @default(autoincrement())
upload Upload @relation(fields: [uploadId], references: [id])
uploadId String @unique
fileName String @db.LongText
}
2024-07-06 03:31:58 +00:00
enum Role {
ADMINISTRATOR
USER
BANNED
}