generator client { provider = "prisma-client-js" } datasource db { provider = "mysql" url = env("DB_CONNECTION_URL") } model ArchivedChannel { channelId String @db.VarChar(19) name String ticket Ticket @relation(fields: [ticketId], references: [id]) ticketId String @db.VarChar(19) @@id([ticketId, channelId]) @@unique([ticketId, channelId]) @@map("archived_channels") } model ArchivedMessage { author ArchivedUser @relation(fields: [ticketId, authorId], references: [ticketId, userId]) authorId String @db.VarChar(19) data Json deleted Boolean @default(false) edited Boolean @default(false) id String @id @unique @db.VarChar(19) ticket Ticket @relation(fields: [ticketId], references: [id]) ticketId String @db.VarChar(19) @@map("archived_messages") } model ArchivedRole { archivedUsers ArchivedUser[] colour String @default("7289DA") @db.Char(6) name String roleId String @db.VarChar(19) ticket Ticket @relation(fields: [ticketId], references: [id]) ticketId String @db.VarChar(19) @@id([ticketId, roleId]) @@unique([ticketId, roleId]) @@map("archived_roles") } model ArchivedUser { archivedMessages ArchivedMessage[] avatar String bot Boolean @default(false) discriminator String @db.Char(4) displayName String role ArchivedRole @relation(fields: [ticketId, roleId], references: [ticketId, roleId]) roleId String @db.VarChar(19) ticket Ticket @relation(fields: [ticketId], references: [id]) ticketId String @db.VarChar(19) userId String @db.VarChar(19) username String @@id([ticketId, userId]) @@unique([ticketId, userId]) @@map("archived_users") } model Category { channelName String @default("ticket-{num}") claiming Boolean @default(false) guild Guild @relation(fields: [guildId], references: [id]) guildId String @db.VarChar(19) id String @id @unique @db.VarChar(19) image String? memberLimit Int @default(1) name String openingMessage String @db.Text ping Json @default("[]") requireTopic Boolean @default(false) roles Json tickets Ticket[] totalLimit Int @default(-1) // survey Survey @relation(fields: [guildId, surveyName], references: [guildId, name]) surveyName String @@map("categories") } model Guild { archive Boolean @default(true) categories Category[] errorColour String @default("RED") id String @id @unique @db.VarChar(19) primaryColour String @default("#009999") successColour String @default("GREEN") // surveys Survey[] tags Tag[] tickets Ticket[] @@map("guilds") } // model Survey { // categories Category[] // guild Guild @relation(fields: [guildId], references: [id]) // guildId String @db.VarChar(19) // name String // questions SurveyQuestion[] // responses SurveyResponse[] // @@id([guildId, name]) // @@unique([guildId, name]) // @@map("surveys") // } // model SurveyResponse { // answers SurveyQuestionAnswer[] // id Int @id @default(autoincrement()) // survey Survey @relation(fields: [surveyGuildId, surveyName], references: [guildId, name]) // surveyGuildId String @db.VarChar(19) // surveyName String // user User @relation(fields: [userId], references: [id]) // userId String @db.VarChar(19) // @@map("survey_responses") // } // model SurveyQuestion { // answers SurveyQuestionAnswer[] // content String @db.Text // id Int @id @default(autoincrement()) // survey Survey @relation(fields: [surveyGuildId, surveyName], references: [guildId, name]) // surveyGuildId String @db.VarChar(19) // surveyName String // @@map("survey_questions") // } // model SurveyQuestionAnswer { // content String @db.Text // id Int @id @default(autoincrement()) // surveyResponse SurveyResponse @relation(fields: [surveyResponseId], references: [id]) // surveyResponseId Int // question SurveyQuestion @relation(fields: [questionId], references: [id]) // questionId Int // @@map("survey_answers") // } model Tag { content String @db.Text guild Guild @relation(fields: [guildId], references: [id]) guildId String @db.VarChar(19) id Int @id @default(autoincrement()) name String @@unique([guildId, name]) @@map("tags") } model Ticket { archivedChannels ArchivedChannel[] archivedMessages ArchivedMessage[] archivedRoles ArchivedRole[] archivedUsers ArchivedUser[] category Category @relation(fields: [categoryId], references: [id]) categoryId String @db.VarChar(19) claimedBy User @relation(name: "TicketsClaimedByUser", fields: [claimedById], references: [id]) claimedById String @db.VarChar(19) closedBy User @relation(name: "TicketsClosedByUser", fields: [closedById], references: [id]) closedById String @db.VarChar(19) closedReason String? createdBy User @relation(name: "TicketsCreatedByUser", fields: [createdById], references: [id]) createdById String @db.VarChar(19) firstResponse DateTime? guild Guild @relation(fields: [guildId], references: [id]) guildId String @db.VarChar(19) id String @id @unique @db.VarChar(19) lastMessage DateTime? number Int open Boolean @default(true) openingMessage String @db.VarChar(19) pinnedMessages Json @default("[]") referencedBy Ticket[] @relation("TicketsReferencedByTicket") references Ticket? @relation(name: "TicketsReferencedByTicket", fields: [referencesId], references: [id]) referencesId String? @db.VarChar(19) topic String? @@unique([guildId, number]) @@map("tickets") } model User { id String @id @unique @db.VarChar(19) // surveyResponses SurveyResponse[] ticketsCreated Ticket[] @relation("TicketsCreatedByUser") ticketsClosed Ticket[] @relation("TicketsClosedByUser") ticketsClaimed Ticket[] @relation("TicketsClaimedByUser") @@map("users") }