mirror of
https://github.com/allthingslinux/tux.git
synced 2024-10-02 16:43:12 +00:00
refactor: Add StarboardController to database controllers
This commit is contained in:
parent
5d285cd2fe
commit
a6c8aaabae
3 changed files with 54 additions and 4 deletions
|
@ -145,13 +145,12 @@ model Reminder {
|
|||
}
|
||||
|
||||
model Starboard {
|
||||
starboard_id BigInt @id @default(autoincrement())
|
||||
guild_id BigInt @id
|
||||
starboard_channel_id BigInt
|
||||
starboard_emoji String
|
||||
starboard_threshold Int
|
||||
guild_id BigInt
|
||||
guild Guild @relation(fields: [guild_id], references: [guild_id])
|
||||
|
||||
@@unique([starboard_id, guild_id])
|
||||
@@index([starboard_id, guild_id])
|
||||
@@unique([guild_id])
|
||||
@@index([guild_id])
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ from .guild_config import GuildConfigController
|
|||
from .note import NoteController
|
||||
from .reminder import ReminderController
|
||||
from .snippet import SnippetController
|
||||
from .starboard import StarboardController
|
||||
|
||||
|
||||
class DatabaseController:
|
||||
|
@ -14,3 +15,4 @@ class DatabaseController:
|
|||
self.reminder = ReminderController()
|
||||
self.guild = GuildController()
|
||||
self.guild_config = GuildConfigController()
|
||||
self.starboard = StarboardController()
|
||||
|
|
49
tux/database/controllers/starboard.py
Normal file
49
tux/database/controllers/starboard.py
Normal file
|
@ -0,0 +1,49 @@
|
|||
from prisma.models import Guild, Starboard
|
||||
from tux.database.client import db
|
||||
|
||||
|
||||
class StarboardController:
|
||||
def __init__(self):
|
||||
self.table = db.starboard
|
||||
self.guild_table = db.guild
|
||||
|
||||
async def ensure_guild_exists(self, guild_id: int) -> Guild | None:
|
||||
guild = await self.guild_table.find_unique(where={"guild_id": guild_id})
|
||||
if guild is None:
|
||||
return await self.guild_table.create(data={"guild_id": guild_id})
|
||||
return guild
|
||||
|
||||
async def get_all_starboards(self) -> list[Starboard]:
|
||||
return await self.table.find_many()
|
||||
|
||||
async def get_starboard_by_guild_id(self, guild_id: int) -> Starboard | None:
|
||||
return await self.table.find_unique(where={"guild_id": guild_id})
|
||||
|
||||
async def create_or_update_starboard(
|
||||
self,
|
||||
guild_id: int,
|
||||
starboard_channel_id: int,
|
||||
starboard_emoji: str,
|
||||
starboard_threshold: int,
|
||||
) -> Starboard:
|
||||
await self.ensure_guild_exists(guild_id)
|
||||
|
||||
return await self.table.upsert(
|
||||
where={"guild_id": guild_id},
|
||||
data={
|
||||
"create": {
|
||||
"guild_id": guild_id,
|
||||
"starboard_channel_id": starboard_channel_id,
|
||||
"starboard_emoji": starboard_emoji,
|
||||
"starboard_threshold": starboard_threshold,
|
||||
},
|
||||
"update": {
|
||||
"starboard_channel_id": starboard_channel_id,
|
||||
"starboard_emoji": starboard_emoji,
|
||||
"starboard_threshold": starboard_threshold,
|
||||
},
|
||||
},
|
||||
)
|
||||
|
||||
async def delete_starboard_by_guild_id(self, guild_id: int) -> Starboard | None:
|
||||
return await self.table.delete(where={"guild_id": guild_id})
|
Loading…
Reference in a new issue