Files

38 lines
1.4 KiB
Python

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()