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(["BOOT", "SYSTEM"]) 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 } model GuildEvent { id String @id @default(uuid()) guildId String title String description String? startsAt DateTime timezone String @default("Asia/Seoul") status EventStatus @default(SCHEDULED) announcementChannelId String? createdByUserId String reminderEnabled Boolean @default(true) reminderOffsets Int[] @default([]) sentReminderOffsets Int[] @default([]) remindedOneHour Boolean @default(false) remindedTenMinutes Boolean @default(false) startedAnnounced Boolean @default(false) announcedAt DateTime? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt @@index([guildId, startsAt]) @@index([guildId, status]) } enum EventStatus { SCHEDULED CANCELLED COMPLETED }