from .backend.Template import GameplayBackendTemplate class GameplayDatabase: """Thin facade that delegates all operations to a GameplayBackendTemplate. Construct via GameplayBackendBuilder.build() or pass a backend directly. """ def __init__(self, backend:GameplayBackendTemplate): self._backend = backend async def initialize(self) -> None: await self._backend.initialize() async def record_game_start(self, game_state:dict, snake_type:str|None=None, snake_version:str|None=None) -> None: await self._backend.record_game_start(game_state, snake_type, snake_version) async def record_turn(self, game_state:dict, my_move:str|None, my_thinking:dict|None=None) -> None: await self._backend.record_turn(game_state, my_move, my_thinking) async def record_game_end(self, game_state:dict) -> None: await self._backend.record_game_end(game_state) async def get_summary(self, recent_limit:int=15) -> dict: return await self._backend.get_summary(recent_limit) async def list_games(self, limit:int=50) -> list[dict]: return await self._backend.list_games(limit) async def finalize_stale_running_games(self, stale_after_seconds:int=600) -> int: return await self._backend.finalize_stale_running_games(stale_after_seconds) async def get_game_replay(self, game_id:str) -> dict|None: return await self._backend.get_game_replay(game_id) async def close(self) -> None: await self._backend.close()