1
Fork 0
mirror of https://github.com/allthingslinux/tux.git synced 2024-10-02 16:43:12 +00:00
tux/prisma/schema.prisma

171 lines
4.6 KiB
Text

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