from pathlib import PurePath from tinydb import TinyDB, where from dataclasses import dataclass @dataclass class Player: first_name: str last_name: str skill: int = 1 status: bool = False wait_time: int = 0 class PlayerDatabase: def __init__(self, database_location: PurePath = PurePath("storage.json")): print(f"Using database location: {database_location.name}") self._database = TinyDB(database_location.name) def get_players(self) -> list[Player]: player_list = [] for row in self._database: player_list.append( Player( first_name=row["first_name"], last_name=row["last_name"], skill=row["skill"], status=row["status"], wait_time=row["wait_time"], ) ) return player_list def add_player(self, player: Player) -> bool: self._database.insert( { "first_name": player.first_name, "last_name": player.last_name, "skill": player.skill, "status": player.status, "wait_time": player.wait_time, } ) def remove_player(self, player: Player) -> bool: self._database.remove( where("first_name") == player.first_name and where("last_name") == player.last_name ) def update_player_skill(self, player: Player): ... def activate_player(self, player: Player): ... def deactivate_player(self, player: Player): ... def deactivate_all_players(self) -> bool: for row in self._database: row["status"] = False def close(self) -> None: self._database.close() def __del__(self): self.close()