From 5d3288f0f66828282f0f200c03777ff9c49239ee Mon Sep 17 00:00:00 2001 From: devRaGonSa <97627393+devRaGonSa@users.noreply.github.com> Date: Fri, 22 May 2026 16:40:03 +0200 Subject: [PATCH] fix: route historical leaderboard snapshots to rcon read model --- backend/app/routes.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/backend/app/routes.py b/backend/app/routes.py index 87b9a21..c906413 100644 --- a/backend/app/routes.py +++ b/backend/app/routes.py @@ -5,6 +5,7 @@ from __future__ import annotations from http import HTTPStatus from urllib.parse import parse_qs, urlparse +from .config import get_historical_data_source_kind from .payloads import ( build_community_payload, build_current_match_kill_feed_payload, @@ -40,6 +41,7 @@ from .payloads import ( build_weekly_leaderboard_payload, build_weekly_top_kills_payload, ) +from .rcon_historical_leaderboards import build_rcon_materialized_leaderboard_snapshot_payload from .scoreboard_origins import get_trusted_public_scoreboard_origin @@ -199,6 +201,13 @@ def resolve_get_payload(path: str) -> tuple[HTTPStatus | None, dict[str, object] return HTTPStatus.BAD_REQUEST, build_error_payload("Invalid metric parameter") if timeframe not in {"weekly", "monthly"}: return HTTPStatus.BAD_REQUEST, build_error_payload("Invalid timeframe parameter") + if get_historical_data_source_kind() == "rcon": + return HTTPStatus.OK, build_rcon_materialized_leaderboard_snapshot_payload( + limit=limit, + server_id=server_id, + metric=metric, + timeframe=timeframe, + ) return HTTPStatus.OK, build_leaderboard_snapshot_payload( limit=limit, server_id=server_id, @@ -215,6 +224,13 @@ def resolve_get_payload(path: str) -> tuple[HTTPStatus | None, dict[str, object] metric = params.get("metric", ["kills"])[0] if metric not in {"kills", "deaths", "support", "matches_over_100_kills"}: return HTTPStatus.BAD_REQUEST, build_error_payload("Invalid metric parameter") + if get_historical_data_source_kind() == "rcon": + return HTTPStatus.OK, build_rcon_materialized_leaderboard_snapshot_payload( + limit=limit, + server_id=server_id, + metric=metric, + timeframe="monthly", + ) return HTTPStatus.OK, build_monthly_leaderboard_snapshot_payload( limit=limit, server_id=server_id, @@ -265,6 +281,13 @@ def resolve_get_payload(path: str) -> tuple[HTTPStatus | None, dict[str, object] metric = params.get("metric", ["kills"])[0] if metric not in {"kills", "deaths", "support", "matches_over_100_kills"}: return HTTPStatus.BAD_REQUEST, build_error_payload("Invalid metric parameter") + if get_historical_data_source_kind() == "rcon": + return HTTPStatus.OK, build_rcon_materialized_leaderboard_snapshot_payload( + limit=limit, + server_id=server_id, + metric=metric, + timeframe="weekly", + ) return HTTPStatus.OK, build_weekly_leaderboard_snapshot_payload( limit=limit, server_id=server_id,