generator client { provider = "prisma-client-js" binaryTargets = ["native", "linux-musl-openssl-3.0.x"] } datasource db { provider = "mysql" url = env("DATABASE_URL") } model Guild { id String @unique createdAt DateTime @default(now()) updatedAt DateTime @updatedAt guildMembers GuildMember[] guildSettings GuildSettings? guildCreditsSettings GuildCreditsSettings? guildQuotesSettings GuildQuotesSettings? apiCredentials ApiCredentials[] cooldowns Cooldown[] Quotes Quotes[] } model User { id String @unique createdAt DateTime @default(now()) updatedAt DateTime @updatedAt guildMembers GuildMember[] apiCredentials ApiCredentials[] cooldowns Cooldown[] userReputation UserReputation? Quotes Quotes[] @relation(name: "Quotes") PostedQuotes Quotes[] @relation(name: "PostedQuotes") } model GuildMember { guildId String userId String createdAt DateTime @default(now()) updatedAt DateTime @default(now()) guild Guild @relation(fields: [guildId], references: [id], onDelete: Cascade) user User @relation(fields: [userId], references: [id], onDelete: Cascade) guildMemberCredit GuildMemberCredit? apiCredentials ApiCredentials[] cooldowns Cooldown[] @@unique([guildId, userId]) } model GuildMemberCredit { guildId String userId String createdAt DateTime @default(now()) updatedAt DateTime @default(now()) guildMember GuildMember @relation(fields: [guildId, userId], references: [guildId, userId], onDelete: Cascade) balance Int @default(0) @@unique([guildId, userId]) @@index([guildId]) @@index([userId]) @@index([guildId, userId]) } model UserReputation { id String @unique createdAt DateTime @default(now()) updatedAt DateTime @default(now()) user User @relation(fields: [id], references: [id], onDelete: Cascade) negative Int @default(0) positive Int @default(0) } model GuildSettings { id String @unique createdAt DateTime @default(now()) updatedAt DateTime @updatedAt guild Guild @relation(fields: [id], references: [id], onDelete: Cascade) creditsSettings GuildCreditsSettings? @relation(fields: [guildCreditsSettingsId], references: [id], onDelete: Cascade) guildCreditsSettingsId String? GuildQuotesSettings GuildQuotesSettings? @relation(fields: [guildQuotesSettingsId], references: [id]) guildQuotesSettingsId String? } model GuildCreditsSettings { id String @unique createdAt DateTime @default(now()) updatedAt DateTime @updatedAt guild Guild @relation(fields: [id], references: [id], onDelete: Cascade) // Work commands workBonusChance Int @default(30) workPenaltyChance Int @default(10) // Bonus commands dailyBonusAmount Int @default(25) weeklyBonusAmount Int @default(50) monthlyBonusAmount Int @default(150) guildSettings GuildSettings[] } model GuildQuotesSettings { id String @unique createdAt DateTime @default(now()) updatedAt DateTime @updatedAt guild Guild @relation(fields: [id], references: [id], onDelete: Cascade) status Boolean @default(false) quoteChannelId String guildSettings GuildSettings[] } model Quotes { id String @id @default(uuid()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt user User @relation(fields: [userId], references: [id], name: "Quotes") userId String guild Guild @relation(fields: [guildId], references: [id], onDelete: Cascade) guildId String message String posterUserId String posterUser User @relation(fields: [posterUserId], references: [id], name: "PostedQuotes") } model ApiCredentials { id String @id @default(cuid()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt guild Guild? @relation(fields: [guildId], references: [id], onDelete: Cascade) guildId String? user User? @relation(fields: [userId], references: [id], onDelete: Cascade) userId String? guildMember GuildMember? @relation(fields: [guildId, userId], references: [guildId, userId], onDelete: Cascade) apiName String credentials Json @@unique([guildId, apiName]) @@unique([userId, apiName]) } model Cooldown { id String @id @default(uuid()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt expiresAt DateTime cooldownItem String guild Guild? @relation(fields: [guildId], references: [id], onDelete: Cascade) user User? @relation(fields: [userId], references: [id], onDelete: Cascade) guildMember GuildMember? @relation(fields: [guildId, userId], references: [guildId, userId], onDelete: Cascade) guildId String? userId String? @@index([cooldownItem, guildId], name: "cooldownItem_guildId_idx") @@index([cooldownItem, userId], name: "cooldownItem_userId_idx") @@index([cooldownItem, guildId, userId], name: "cooldownItem_guildId_userId_idx") } model ImportOldData { id String @unique done Boolean @default(false) beforeMessageId String? }