import json from datetime import datetime, timezone from core.dal.base_repository import BaseRepository class BanRepository(BaseRepository): def get_all(self, server_id: int, active_only: bool = True) -> list[dict]: if active_only: return self._fetchall( "SELECT * FROM bans WHERE server_id = :sid AND is_active = 1 ORDER BY banned_at DESC", {"sid": server_id}, ) return self._fetchall( "SELECT * FROM bans WHERE server_id = :sid ORDER BY banned_at DESC", {"sid": server_id}, ) def create( self, server_id: int, guid: str | None, name: str | None, reason: str | None, banned_by: str, expires_at: str | None = None, game_data: dict | None = None, ) -> int: return self._lastrowid( """ INSERT INTO bans (server_id, guid, name, reason, banned_by, expires_at, game_data) VALUES (:sid, :guid, :name, :reason, :by, :exp, :gd) """, { "sid": server_id, "guid": guid, "name": name, "reason": reason, "by": banned_by, "exp": expires_at, "gd": json.dumps(game_data or {}), }, ) def deactivate(self, ban_id: int) -> None: self._execute( "UPDATE bans SET is_active = 0 WHERE id = :id", {"id": ban_id}, ) def get_by_id(self, ban_id: int) -> dict | None: return self._fetchone("SELECT * FROM bans WHERE id = :id", {"id": ban_id})