move Server code into more services and use them into blueprints or server

This commit is contained in:
2026-04-06 04:20:07 +02:00
parent 30eb17bb83
commit 98be2fe6fe
8 changed files with 373 additions and 302 deletions
+12 -12
View File
@@ -23,10 +23,10 @@ def create_battlesnake_blueprint(server:'Server') -> Blueprint:
@blueprint.post('/start')
async def on_start():
server.metrics_collector.record_http_request('start')
await server._prune_stale_games()
await server.game_runtime.prune_stale_games()
game_state = await request.get_json()
await server._create_game_board(game_state)
await server._record_gameplay_start(game_state)
await server.game_runtime.create_game_board(game_state, snake_builder=server.snake_builder)
await server.gameplay_tracking.record_gameplay_start(game_state)
await await_log(server.logger.info(f'GAME START: {game_state['game']}'))
return 'ok'
@@ -35,10 +35,10 @@ def create_battlesnake_blueprint(server:'Server') -> Blueprint:
server.metrics_collector.record_http_request('move')
game_state = await request.get_json()
move_started = time.perf_counter()
game_board = cast(GameBoard, await server._get_game_board(game_state))
game_board = cast(GameBoard, await server.game_runtime.get_game_board(game_state, snake_builder=server.snake_builder))
next_move = game_board.snake_neat_make_a_move()
await server._persist_game_board(game_state['game']['id'], game_board)
await server._record_gameplay_turn(game_state, next_move, game_board)
await server.game_runtime.persist_game_board(game_state['game']['id'], game_board)
await server.gameplay_tracking.record_gameplay_turn(game_state, next_move, game_board)
elapsed_ms = (time.perf_counter() - move_started) * 1000.0
await server.metrics_collector.record_move(next_move, elapsed_ms)
@@ -50,10 +50,10 @@ def create_battlesnake_blueprint(server:'Server') -> Blueprint:
@blueprint.post('/end')
async def on_end():
server.metrics_collector.record_http_request('end')
await server._prune_stale_games()
await server.game_runtime.prune_stale_games()
game_state = await request.get_json()
if server.store_game_state:
game_board = cast(GameBoard, await server._get_game_board(game_state, end=True))
game_board = cast(GameBoard, await server.game_runtime.get_game_board(game_state, snake_builder=server.snake_builder, end=True))
if server.check_tls_security:
await game_board.save(
StorageLoader.build(server.storage_type),
@@ -68,14 +68,14 @@ def create_battlesnake_blueprint(server:'Server') -> Blueprint:
database=os.getenv('EDGEDB_DATABASE', None),
)
await server._record_gameplay_end(game_state)
await server._push_dashboard_games_update(game_state)
await server.gameplay_tracking.record_gameplay_end(game_state)
await server.dashboard_query.push_dashboard_games_update(game_state)
await await_log(server.logger.info(f'GAME ENDED: Winner is {[x['name'] for x in game_state['board']['snakes']]}'))
await server._delete_game_board(game_state)
await server.game_runtime.delete_game_board(game_state)
await server.metrics_collector.record_game_end(game_state)
return 'ok'
@blueprint.get("/cleanup")
@blueprint.get('/cleanup')
async def cleanup():
results = server._cleanup_database()
return jsonify(data=json.loads(results), status=200)