diff --git a/app.py b/app.py index 927b669..90b2855 100644 --- a/app.py +++ b/app.py @@ -1421,6 +1421,36 @@ class MatchChannelPayload(BaseModel): channel: str = "" +@app.post("/admin/session/{session_token}/schedule/channel") +def update_schedule_channel(session_token: str, payload: MatchChannelPayload): + session_row = get_match_session_by_token(session_token) + if not session_row: + return JSONResponse({"error": "session_not_found"}, status_code=404) + + allowed = {"", "match", "match_premier", "match_and_premier"} + if payload.channel not in allowed: + return JSONResponse({"error": "invalid_channel"}, status_code=400) + + conn = get_connection() + try: + with conn.cursor() as cur: + cur.execute( + """ + UPDATE matches + SET channel = %s + WHERE external_id = %s + """, + (payload.channel, payload.match_external_id), + ) + conn.commit() + return {"success": True} + except Exception as e: + conn.rollback() + return JSONResponse({"error": str(e)}, status_code=500) + finally: + conn.close() + + @app.get("/vmix/session/{session_token}/schedule") def vmix_schedule(session_token: str): session_row = get_match_session_by_token(session_token) diff --git a/repositories/match_repository.py b/repositories/match_repository.py index 4be9d98..9010d2b 100644 --- a/repositories/match_repository.py +++ b/repositories/match_repository.py @@ -238,7 +238,8 @@ def get_tour_schedule_by_match_id(match_id: int) -> list[dict]: m.home_score, m.away_score, ht.name AS home_team_name, - at.name AS away_team_name + at.name AS away_team_name, + COALESCE(m.channel, '') AS channel FROM matches m LEFT JOIN teams ht ON ht.id = m.home_team_id LEFT JOIN teams at ON at.id = m.away_team_id @@ -262,6 +263,7 @@ def get_tour_schedule_by_match_id(match_id: int) -> list[dict]: "away_score": r[6], "home_team_name": r[7] or "", "away_team_name": r[8] or "", + "channel": r[9] or "", } for r in rows ] diff --git a/vmix.zip b/vmix.zip index e34666a..882bfb1 100644 Binary files a/vmix.zip and b/vmix.zip differ