69 lines
1.7 KiB
Plaintext
69 lines
1.7 KiB
Plaintext
// This is your Prisma schema file,
|
|
// learn more about it in the docs: https://pris.ly/d/prisma-schema
|
|
|
|
generator client {
|
|
provider = "prisma-client-js"
|
|
}
|
|
|
|
datasource db {
|
|
provider = "postgresql"
|
|
url = env("DATABASE_URL")
|
|
}
|
|
|
|
model Guild {
|
|
id String @id
|
|
events Event[]
|
|
members Member[]
|
|
penalties Penalty[]
|
|
queues Queue[]
|
|
}
|
|
|
|
model Queue {
|
|
title String
|
|
description String?
|
|
updatedAt DateTime @updatedAt
|
|
Tracks Json
|
|
Member Member @relation(fields: [userId, guildId], references: [userId, guildId])
|
|
userId String
|
|
authorId String
|
|
Guild Guild @relation(fields: [guildId], references: [id])
|
|
guildId String
|
|
@@unique([title, guildId], name: "queueIdentifier")
|
|
}
|
|
|
|
model Member {
|
|
userId String
|
|
level Int @default(0)
|
|
queues Queue[]
|
|
Guild Guild @relation(fields: [guildId], references: [id])
|
|
guildId String
|
|
penalties Penalty[]
|
|
@@unique([userId, guildId], name: "memberIdentifier")
|
|
}
|
|
|
|
enum PenaltyType {
|
|
BAN
|
|
TIMEOUT
|
|
WARN
|
|
}
|
|
|
|
model Penalty {
|
|
Member Member @relation(fields: [userId, guildId], references: [userId, guildId])
|
|
userId String
|
|
type PenaltyType
|
|
reason String?
|
|
expires DateTime?
|
|
Guild Guild @relation(fields: [guildId], references: [id])
|
|
guildId String
|
|
@@unique([type, userId, guildId], name: "penaltyIdentifier")
|
|
}
|
|
|
|
model Event {
|
|
title String
|
|
action String
|
|
metadata Json
|
|
Guild Guild @relation(fields: [guildId], references: [id])
|
|
guildId String
|
|
@@unique([title, action, guildId], name: "eventIdentifier")
|
|
}
|