mirror of
https://github.com/Hessenuk/DiscordTickets.git
synced 2024-12-23 00:03:09 +02:00
249 lines
9.2 KiB
Plaintext
249 lines
9.2 KiB
Plaintext
generator client {
|
|
provider = "prisma-client-js"
|
|
}
|
|
|
|
datasource db {
|
|
provider = "mysql"
|
|
url = env("DB_CONNECTION_URL")
|
|
shadowDatabaseUrl = env("SHADOW_DATABASE_URL")
|
|
}
|
|
|
|
model ArchivedChannel {
|
|
channelId String @db.VarChar(19)
|
|
createdAt DateTime @default(now())
|
|
name String
|
|
ticket Ticket @relation(fields: [ticketId], references: [id], onDelete: Cascade)
|
|
ticketId String @db.VarChar(19)
|
|
|
|
@@id([ticketId, channelId])
|
|
@@unique([ticketId, channelId])
|
|
@@map("archivedChannels")
|
|
}
|
|
|
|
model ArchivedMessage {
|
|
author ArchivedUser @relation(fields: [ticketId, authorId], references: [ticketId, userId], onDelete: Cascade)
|
|
authorId String @db.VarChar(19)
|
|
content String @db.Text
|
|
createdAt DateTime @default(now())
|
|
deleted Boolean @default(false)
|
|
edited Boolean @default(false)
|
|
external Boolean @default(false)
|
|
id String @id @db.VarChar(19)
|
|
ticket Ticket @relation(fields: [ticketId], references: [id], onDelete: Cascade)
|
|
ticketId String @db.VarChar(19)
|
|
|
|
@@map("archivedMessages")
|
|
}
|
|
|
|
model ArchivedRole {
|
|
archivedUsers ArchivedUser[]
|
|
colour String @default("5865F2") @db.Char(6) // 7289DA
|
|
createdAt DateTime @default(now())
|
|
name String
|
|
roleId String @db.VarChar(19)
|
|
ticket Ticket @relation(fields: [ticketId], references: [id], onDelete: Cascade)
|
|
ticketId String @db.VarChar(19)
|
|
|
|
@@id([ticketId, roleId])
|
|
@@unique([ticketId, roleId])
|
|
@@map("archivedRoles")
|
|
}
|
|
|
|
model ArchivedUser {
|
|
archivedMessages ArchivedMessage[]
|
|
avatar String?
|
|
bot Boolean @default(false)
|
|
createdAt DateTime @default(now())
|
|
discriminator String? @db.Char(4)
|
|
displayName String? @db.Text
|
|
role ArchivedRole? @relation(fields: [ticketId, roleId], references: [ticketId, roleId], onDelete: Cascade)
|
|
roleId String? @db.VarChar(19)
|
|
ticket Ticket @relation(fields: [ticketId], references: [id], onDelete: Cascade)
|
|
ticketId String @db.VarChar(19)
|
|
userId String @db.VarChar(19)
|
|
username String? @db.Text
|
|
|
|
@@id([ticketId, userId])
|
|
@@unique([ticketId, userId])
|
|
@@map("archivedUsers")
|
|
}
|
|
|
|
model Category {
|
|
channelName String
|
|
claiming Boolean @default(false)
|
|
createdAt DateTime @default(now())
|
|
cooldown Int?
|
|
customTopic String?
|
|
description String
|
|
discordCategory String @db.VarChar(19)
|
|
emoji String
|
|
enableFeedback Boolean @default(false)
|
|
guild Guild @relation(fields: [guildId], references: [id], onDelete: Cascade)
|
|
guildId String @db.VarChar(19)
|
|
id Int @id @default(autoincrement())
|
|
image String?
|
|
memberLimit Int @default(1)
|
|
name String
|
|
openingMessage String @db.Text
|
|
pingRoles Json @default("[]")
|
|
questions Question[]
|
|
ratelimit Int?
|
|
requiredRoles Json @default("[]")
|
|
requireTopic Boolean @default(false)
|
|
staffRoles Json
|
|
tickets Ticket[]
|
|
totalLimit Int @default(50)
|
|
|
|
@@map("categories")
|
|
}
|
|
|
|
model Feedback {
|
|
comment String? @db.Text
|
|
createdAt DateTime @default(now())
|
|
guild Guild @relation(fields: [guildId], references: [id], onDelete: Cascade)
|
|
guildId String @db.VarChar(19)
|
|
rating Int
|
|
ticket Ticket @relation(fields: [ticketId], references: [id])
|
|
ticketId String @id @db.VarChar(19)
|
|
user User? @relation(fields: [userId], references: [id])
|
|
userId String? @db.VarChar(19)
|
|
|
|
@@map("feedback")
|
|
}
|
|
|
|
model Guild {
|
|
autoClose Int @default(43200000)
|
|
autoTag Json @default("[]")
|
|
archive Boolean @default(true)
|
|
blocklist Json @default("[]")
|
|
categories Category[]
|
|
claimButton Boolean @default(false)
|
|
closeButton Boolean @default(false)
|
|
createdAt DateTime @default(now())
|
|
errorColour String @default("Red")
|
|
feedback Feedback[]
|
|
footer String? @default("Discord Tickets by eartharoid")
|
|
id String @id @db.VarChar(19)
|
|
locale String @default("en-GB")
|
|
logChannel String? @db.VarChar(19)
|
|
primaryColour String @default("#009999")
|
|
staleAfter Int?
|
|
successColour String @default("Green")
|
|
tags Tag[]
|
|
tickets Ticket[]
|
|
workingHours Json @default("[\"UTC\", [\"00:00\",\"23:59\"], [\"00:00\",\"23:59\"], [\"00:00\",\"23:59\"], [\"00:00\",\"23:59\"], [\"00:00\",\"23:59\"], [\"00:00\",\"23:59\"], [\"00:00\",\"23:59\"]]")
|
|
|
|
@@map("guilds")
|
|
}
|
|
|
|
model Question {
|
|
answers QuestionAnswer[]
|
|
createdAt DateTime @default(now())
|
|
id String @id @default(uuid())
|
|
category Category @relation(fields: [categoryId], references: [id], onDelete: Cascade)
|
|
categoryId Int
|
|
label String @db.VarChar(45)
|
|
maxLength Int? @default(4000)
|
|
minLength Int? @default(0)
|
|
options Json @default("[]")
|
|
order Int
|
|
placeholder String? @db.VarChar(100)
|
|
required Boolean @default(true)
|
|
style Int @default(2)
|
|
type QuestionType @default(TEXT)
|
|
value String? @db.Text
|
|
|
|
@@map("questions")
|
|
}
|
|
|
|
model QuestionAnswer {
|
|
createdAt DateTime @default(now())
|
|
id Int @id @default(autoincrement())
|
|
ticket Ticket @relation(fields: [ticketId], references: [id], onDelete: Cascade)
|
|
ticketId String @db.VarChar(19)
|
|
question Question @relation(fields: [questionId], references: [id], onDelete: Cascade)
|
|
questionId String
|
|
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
userId String @db.VarChar(19)
|
|
value String? @db.Text
|
|
|
|
@@map("questionAnswers")
|
|
}
|
|
|
|
model Tag {
|
|
content String @db.Text
|
|
createdAt DateTime @default(now())
|
|
guild Guild @relation(fields: [guildId], references: [id], onDelete: Cascade)
|
|
guildId String @db.VarChar(19)
|
|
id Int @id @default(autoincrement())
|
|
name String
|
|
regex String?
|
|
|
|
@@unique([guildId, name])
|
|
@@map("tags")
|
|
}
|
|
|
|
model Ticket {
|
|
archivedChannels ArchivedChannel[]
|
|
archivedMessages ArchivedMessage[]
|
|
archivedRoles ArchivedRole[]
|
|
archivedUsers ArchivedUser[]
|
|
category Category? @relation(fields: [categoryId], references: [id], onDelete: SetNull)
|
|
categoryId Int?
|
|
claimedBy User? @relation(name: "TicketsClaimedByUser", fields: [claimedById], references: [id])
|
|
claimedById String? @db.VarChar(19)
|
|
closedAt DateTime?
|
|
closedBy User? @relation(name: "TicketsClosedByUser", fields: [closedById], references: [id])
|
|
closedById String? @db.VarChar(19)
|
|
closedReason String? @db.Text
|
|
createdAt DateTime @default(now())
|
|
createdBy User @relation(name: "TicketsCreatedByUser", fields: [createdById], references: [id])
|
|
createdById String @db.VarChar(19)
|
|
deleted Boolean @default(false)
|
|
feedback Feedback?
|
|
firstResponseAt DateTime?
|
|
guild Guild @relation(fields: [guildId], references: [id], onDelete: Cascade)
|
|
guildId String @db.VarChar(19)
|
|
id String @id @db.VarChar(19)
|
|
lastMessageAt DateTime?
|
|
messageCount Int?
|
|
number Int
|
|
open Boolean @default(true)
|
|
openingMessageId String @db.VarChar(19)
|
|
pinnedMessageIds Json @default("[]")
|
|
priority TicketPriority?
|
|
referencedBy Ticket[] @relation("TicketsReferencedByTicket")
|
|
referencesMessageId String? @db.VarChar(19)
|
|
referencesTicket Ticket? @relation(name: "TicketsReferencedByTicket", fields: [referencesTicketId], references: [id], onDelete: SetNull)
|
|
referencesTicketId String? @db.VarChar(19)
|
|
topic String? @db.Text
|
|
questionAnswers QuestionAnswer[]
|
|
|
|
@@unique([guildId, number])
|
|
@@map("tickets")
|
|
}
|
|
|
|
model User {
|
|
createdAt DateTime @default(now())
|
|
feedback Feedback[]
|
|
id String @id @db.VarChar(19)
|
|
messageCount Int @default(0)
|
|
ticketsCreated Ticket[] @relation("TicketsCreatedByUser")
|
|
ticketsClosed Ticket[] @relation("TicketsClosedByUser")
|
|
ticketsClaimed Ticket[] @relation("TicketsClaimedByUser")
|
|
questionAnswers QuestionAnswer[]
|
|
|
|
@@map("users")
|
|
}
|
|
|
|
enum TicketPriority {
|
|
LOW
|
|
MEDIUM
|
|
HIGH
|
|
}
|
|
|
|
enum QuestionType {
|
|
MENU
|
|
TEXT
|
|
}
|