Kord/prisma/schema.prisma

113 lines
2.4 KiB
Plaintext

generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model GuildConfig {
guildId String @id
prefix String @default("!")
mimicEnabled Boolean @default(false)
bigEmojiEnabled Boolean @default(false)
locale String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model InviteRole {
id String @id @default(uuid())
guildId String
inviteCode String
roleId String
createdAt DateTime @default(now())
@@unique([guildId, inviteCode])
}
model UserSubscription {
userId String @id
tier SubscriptionTier @default(FREE)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
guilds GuildOwnership[]
}
model GuildOwnership {
guildId String @id
ownerId String
createdAt DateTime @default(now())
owner UserSubscription @relation(fields: [ownerId], references: [userId], onDelete: Cascade)
@@index([ownerId])
}
model VoiceGenerator {
channelId String @id
guildId String
categoryId String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@index([guildId])
}
model TempVoiceChannel {
channelId String @id
guildId String
ownerId String
deleteWhen DeleteCondition @default(EMPTY)
createdAt DateTime @default(now())
@@index([guildId])
@@index([ownerId])
}
model UserVoiceProfile {
userId String
guildId String
customName String?
userLimit Int?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@id([userId, guildId])
}
model UserLocale {
userId String @id
locale String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
enum SubscriptionTier {
FREE
STANDARD
PRO
PREMIUM
}
enum DeleteCondition {
OWNER_LEAVE
EMPTY
}
model AuditChannel {
guildId String @id
channelId String
disabledCategories String[] @default([])
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model VoiceGuildConfig {
guildId String @id
defaultNameTemplate String @default("{{username}}'s Room")
defaultUserLimit Int @default(0)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}