xyter/prisma/schema.prisma

144 lines
3.7 KiB
Text

// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
generator client {
provider = "prisma-client-js"
previewFeatures = ["interactiveTransactions"]
}
datasource db {
provider = "sqlite"
url = env("DATABASE_URL")
}
model Guild {
id String @unique
guildMembers GuildMember[]
cooldowns Cooldown[]
// Settings
embedColorSuccess String @default("#22bb33")
embedColorWait String @default("#f0ad4e")
embedColorError String @default("#bb2124")
embedFooterText String @default("https://github.com/ZynerOrg/xyter")
embedFooterIcon String @default("https://github.com/ZynerOrg.png")
// Modules
creditsEnabled Boolean @default(false)
creditsRate Int @default(1)
creditsTimeout Int @default(5)
creditsWorkRate Int @default(25)
creditsWorkTimeout Int @default(86400)
creditsMinimumLength Int @default(5)
pointsEnabled Boolean @default(false)
pointsRate Int @default(1)
pointsTimeout Int @default(5)
pointsMinimumLength Int @default(5)
reputationsEnabled Boolean @default(false)
countersEnabled Boolean @default(false)
counters GuildCounter[]
apiCpggUrlIv String?
apiCpggUrlContent String?
apiCpggTokenIv String?
apiCpggTokenContent String?
auditsEnabled Boolean @default(false)
auditsChannelId String?
shopRolesEnabled Boolean @default(false)
shopRolesPricePerHour Int @default(5)
welcomeEnabled Boolean @default(false)
welcomeJoinChannelId String?
welcomeJoinChannelMessage String?
welcomeLeaveChannelId String?
welcomeLeaveChannelMessage String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
GuildShopRoles GuildShopRoles[]
}
model User {
id String @unique
GuildMember GuildMember[]
// Settings
// Modules
reputationsEarned Int @default(0)
Cooldown Cooldown[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
GuildShopRoles GuildShopRoles[]
}
model GuildMember {
userId String
guildId String
user User @relation(fields: [userId], references: [id])
guild Guild @relation(fields: [guildId], references: [id])
// Settings
// Modules
creditsEarned Int @default(0)
pointsEarned Int @default(0)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
GuildShopRoles GuildShopRoles[]
// Unique Identifier
@@unique([userId, guildId])
}
model GuildCounter {
guildId String
channelId String
triggerWord String
count Int @default(0)
guild Guild @relation(fields: [guildId], references: [id])
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@unique([guildId, channelId])
}
model Cooldown {
guild Guild @relation(fields: [guildId], references: [id])
user User @relation(fields: [userId], references: [id])
guildId String
userId String
cooldown Int
timeoutId String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@unique([guildId, userId, timeoutId])
}
model GuildShopRoles {
guildId String
roleId String
userId String
pricePerHour Int @default(5)
lastPayed DateTime
guild Guild @relation(fields: [guildId], references: [id])
user User @relation(fields: [userId], references: [id])
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
member GuildMember? @relation(fields: [userId, guildId], references: [userId, guildId])
@@unique([guildId, userId, roleId])
}