generator client { provider = "prisma-client-py" recursive_type_depth = "-1" interface = "asyncio" } datasource db { provider = "postgresql" url = env("DATABASE_URL") directUrl = env("DATABASE_URL") } model Guild { guild_id BigInt @id guild_joined_at DateTime? @default(now()) cases Case[] snippets Snippet[] notes Note[] reminders Reminder[] guild_config GuildConfig[] AFK AFKModel[] Starboard Starboard? StarboardMessage StarboardMessage[] case_count BigInt @default(0) @@index([guild_id]) } model GuildConfig { prefix String? mod_log_id BigInt? audit_log_id BigInt? join_log_id BigInt? private_log_id BigInt? report_log_id BigInt? dev_log_id BigInt? jail_channel_id BigInt? general_channel_id BigInt? starboard_channel_id BigInt? perm_level_0_role_id BigInt? perm_level_1_role_id BigInt? perm_level_2_role_id BigInt? perm_level_3_role_id BigInt? perm_level_4_role_id BigInt? perm_level_5_role_id BigInt? perm_level_6_role_id BigInt? perm_level_7_role_id BigInt? base_staff_role_id BigInt? base_member_role_id BigInt? jail_role_id BigInt? quarantine_role_id BigInt? guild_id BigInt @id @unique guild Guild @relation(fields: [guild_id], references: [guild_id]) @@index([guild_id]) } model Case { case_id BigInt @id @default(autoincrement()) case_status Boolean? @default(true) case_type CaseType case_reason String case_moderator_id BigInt case_user_id BigInt case_user_roles BigInt[] @default([]) case_number BigInt? case_created_at DateTime? @default(now()) case_expires_at DateTime? case_tempban_expired Boolean? @default(false) guild_id BigInt guild Guild @relation(fields: [guild_id], references: [guild_id]) @@unique([case_number, guild_id]) @@index([case_number, guild_id]) } model Snippet { snippet_id BigInt @id @default(autoincrement()) snippet_name String snippet_content String snippet_user_id BigInt snippet_created_at DateTime @default(now()) guild_id BigInt uses BigInt @default(0) locked Boolean @default(false) guild Guild @relation(fields: [guild_id], references: [guild_id]) @@unique([snippet_name, guild_id]) @@index([snippet_name, guild_id]) } model Note { note_id BigInt @id @default(autoincrement()) note_content String note_created_at DateTime @default(now()) note_moderator_id BigInt note_user_id BigInt note_number BigInt? guild_id BigInt guild Guild @relation(fields: [guild_id], references: [guild_id]) @@unique([note_number, guild_id]) @@index([note_number, guild_id]) } model Reminder { reminder_id BigInt @id @default(autoincrement()) reminder_content String reminder_created_at DateTime @default(now()) reminder_expires_at DateTime reminder_channel_id BigInt reminder_user_id BigInt reminder_sent Boolean @default(false) guild_id BigInt guild Guild @relation(fields: [guild_id], references: [guild_id]) @@unique([reminder_id, guild_id]) @@index([reminder_id, guild_id]) } model AFKModel { member_id BigInt @id nickname String reason String since DateTime @default(now()) guild_id BigInt guild Guild @relation(fields: [guild_id], references: [guild_id]) @@unique([member_id, guild_id]) @@index([member_id]) } model Starboard { guild_id BigInt @id @unique starboard_channel_id BigInt starboard_emoji String starboard_threshold Int Guild Guild @relation(fields: [guild_id], references: [guild_id]) @@index([guild_id]) } model StarboardMessage { message_id BigInt @id message_content String message_created_at DateTime @default(now()) message_expires_at DateTime message_channel_id BigInt message_user_id BigInt message_guild_id BigInt star_count Int @default(0) starboard_message_id BigInt Guild Guild @relation(fields: [message_guild_id], references: [guild_id]) @@unique([message_id, message_guild_id]) @@index([message_id, message_guild_id]) } enum CaseType { BAN UNBAN HACKBAN TEMPBAN KICK SNIPPETBAN TIMEOUT UNTIMEOUT WARN JAIL UNJAIL SNIPPETUNBAN UNTEMPBAN POLLBAN POLLUNBAN }