import logging import sqlite3 import requests from app.config import DB_PATH logger = logging.getLogger(__name__) def create_standings_table(conn): cursor = conn.cursor() cursor.execute(""" CREATE TABLE IF NOT EXISTS standings ( team_common_name TEXT, league_sequence INTEGER, league_l10_sequence INTEGER ) """) conn.commit() def truncate_standings_table(conn): cursor = conn.cursor() cursor.execute("DELETE FROM standings") conn.commit() def insert_standings_info(conn, standings_info): cursor = conn.cursor() for team in standings_info: cursor.execute( """ INSERT INTO standings (team_common_name, league_sequence, league_l10_sequence) VALUES (?, ?, ?) """, ( team["team_common_name"], team["league_sequence"], team["league_l10_sequence"], ), ) conn.commit() def extract_standings_info(): url = "https://api-web.nhle.com/v1/standings/now" try: response = requests.get(url, timeout=10) response.raise_for_status() standings_data = response.json() standings_info = [] for team in standings_data.get("standings", []): team_info = { "team_common_name": team["teamCommonName"]["default"], "league_sequence": team["leagueSequence"], "league_l10_sequence": team["leagueL10Sequence"], } standings_info.append(team_info) return standings_info except requests.RequestException as e: logger.error("Failed to fetch standings: %s", e) return None def update_nhl_standings(): conn = sqlite3.connect(DB_PATH) create_standings_table(conn) truncate_standings_table(conn) standings_info = extract_standings_info() if standings_info: insert_standings_info(conn, standings_info) conn.close()