generator client { provider = "prisma-client-js" } 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? apiCredentials ApiCredentials[] cooldowns Cooldown[] } model User { id String @unique createdAt DateTime @default(now()) updatedAt DateTime @updatedAt guildMembers GuildMember[] apiCredentials ApiCredentials[] cooldowns Cooldown[] userReputation UserReputation? } 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]) } 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? } 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) status Boolean @default(false) rate Int @default(1) timeout Int @default(5) workRate Int @default(25) workTimeout Int @default(86400) minimumLength Int @default(5) guildSettings GuildSettings[] } 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 Int @id @default(autoincrement()) cooldownItem String expiresAt DateTime 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) @@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? }