diff --git a/repositories/player_repository.py b/repositories/player_repository.py index 3b9f250..1880c67 100644 --- a/repositories/player_repository.py +++ b/repositories/player_repository.py @@ -186,7 +186,8 @@ def mark_match_parse_error(external_id: str, error_text: str) -> None: def get_player_id_by_name_and_team(full_name: str, team_id: int) -> int | None: query = """ - SELECT id + SELECT id, + position FROM players WHERE team_id = %s AND LOWER(full_name) = LOWER(%s) @@ -198,7 +199,7 @@ def get_player_id_by_name_and_team(full_name: str, team_id: int) -> int | None: with conn.cursor() as cur: cur.execute(query, (team_id, full_name.strip())) row = cur.fetchone() - return row[0] if row else None + return row if row else None finally: conn.close() diff --git a/services/game_service.py b/services/game_service.py index c5c585e..33fc655 100644 --- a/services/game_service.py +++ b/services/game_service.py @@ -38,12 +38,13 @@ def sync_match_page( lineup_rows = [] for player in home_starting: player_id = None + player_position = None if player.get("player_external_id"): player_id = get_player_id_by_external_id(player["player_external_id"]) if player_id is None: - player_id = get_player_id_by_name_and_team( + player_id, player_position = get_player_id_by_name_and_team( player["player_name"], home_team_id ) @@ -55,6 +56,7 @@ def sync_match_page( "player_name": player["player_name"], "number": player.get("number"), "position": player.get("position"), + "position_full": player_position, "is_captain": bool(player.get("is_captain")), "lineup_type": "starting", "source": "parser", @@ -63,12 +65,13 @@ def sync_match_page( for player in away_starting: player_id = None + player_position = None if player.get("player_external_id"): player_id = get_player_id_by_external_id(player["player_external_id"]) if player_id is None: - player_id = get_player_id_by_name_and_team( + player_id, player_position = get_player_id_by_name_and_team( player["player_name"], away_team_id ) @@ -80,6 +83,7 @@ def sync_match_page( "player_name": player["player_name"], "number": player.get("number"), "position": player.get("position"), + "position_full": player_position, "is_captain": bool(player.get("is_captain")), "lineup_type": "starting", "source": "parser", @@ -88,12 +92,13 @@ def sync_match_page( for player in home_bench: player_id = None + player_position = None if player.get("player_external_id"): player_id = get_player_id_by_external_id(player["player_external_id"]) if player_id is None: - player_id = get_player_id_by_name_and_team( + player_id, player_position = get_player_id_by_name_and_team( player["player_name"], home_team_id ) @@ -105,6 +110,7 @@ def sync_match_page( "player_name": player["player_name"], "number": player.get("number"), "position": player.get("position"), + "position_full": player_position, "is_captain": bool(player.get("is_captain")), "lineup_type": "bench", "source": "parser", @@ -113,12 +119,13 @@ def sync_match_page( for player in away_bench: player_id = None + player_position = None if player.get("player_external_id"): player_id = get_player_id_by_external_id(player["player_external_id"]) if player_id is None: - player_id = get_player_id_by_name_and_team( + player_id, player_position = get_player_id_by_name_and_team( player["player_name"], away_team_id ) @@ -130,6 +137,7 @@ def sync_match_page( "player_name": player["player_name"], "number": player.get("number"), "position": player.get("position"), + "position_full": player_position, "is_captain": bool(player.get("is_captain")), "lineup_type": "bench", "source": "parser",