38 lines
1.4 KiB
Python
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()
|