xyter/prisma/schema.prisma
2023-05-28 16:06:21 +02:00

143 lines
4.3 KiB
Text

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?
}