diff --git a/app/database.py b/app/database.py index 63c4ba9..4129917 100644 --- a/app/database.py +++ b/app/database.py @@ -127,6 +127,7 @@ async def init_db(): "ALTER TABLE games ADD COLUMN skin_value REAL", "ALTER TABLE games ADD COLUMN skin_double_back_nine INTEGER NOT NULL DEFAULT 0", "ALTER TABLE games ADD COLUMN skins_net INTEGER NOT NULL DEFAULT 0", + "ALTER TABLE games ADD COLUMN side_skins_enabled INTEGER NOT NULL DEFAULT 0", ]: try: await db.execute(migration) diff --git a/app/routers/games.py b/app/routers/games.py index 9c20047..0560873 100644 --- a/app/routers/games.py +++ b/app/routers/games.py @@ -284,10 +284,11 @@ async def create_game(request: Request, holes_count: int = Form(...), skin_value = float(skin_value_str) if skin_value_str else None skin_double_back_nine = 1 if form.get("skin_double_back_nine") == "1" else 0 skins_net = 1 if form.get("skins_net") == "1" else 0 + side_skins_enabled = 1 if form.get("side_skins_enabled") == "1" else 0 await db.execute( - "INSERT INTO games (id, format, holes_count, status, created_by, created_at, course_id, carryover, skin_value, skin_double_back_nine, skins_net) VALUES (?,?,?,?,?,?,?,?,?,?,?)", - (game_id, format, holes_count, "active", user["id"], now, course_id, carryover, skin_value, skin_double_back_nine, skins_net), + "INSERT INTO games (id, format, holes_count, status, created_by, created_at, course_id, carryover, skin_value, skin_double_back_nine, skins_net, side_skins_enabled) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)", + (game_id, format, holes_count, "active", user["id"], now, course_id, carryover, skin_value, skin_double_back_nine, skins_net, side_skins_enabled), ) # Pre-fetch course holes for handicap calculation @@ -389,11 +390,14 @@ async def game_summary(game_id: str, request: Request, user: dict = Depends(get_ skin_value = game["skin_value"] skin_double_back9 = bool(game["skin_double_back_nine"]) skins_net = bool(game["skins_net"]) - if game["format"] == "skins": + side_skins_enabled = bool(game.get("side_skins_enabled", 0)) + if game["format"] == "skins" or side_skins_enabled: carryover = bool(game["carryover"]) net_sph = strokes_per_hole if skins_net else None skins_won, skins_hole_results, unclaimed, money_won, unclaimed_money = _calc_skins( players, scores, holes, carryover, skin_value, skin_double_back9, net_sph) + + if game["format"] == "skins": results = sorted(players, key=lambda p: skins_won.get(p["id"], 0), reverse=True) else: results = sorted(players, key=lambda p: totals.get(p["id"], {}).get("total", 0), reverse=True) @@ -408,6 +412,7 @@ async def game_summary(game_id: str, request: Request, user: dict = Depends(get_ "skins_won": skins_won, "skins_hole_results": skins_hole_results, "unclaimed": unclaimed, "money_won": money_won, "unclaimed_money": unclaimed_money, "skin_value": skin_value, "skin_double_back9": skin_double_back9, "skins_net": skins_net, + "side_skins_enabled": side_skins_enabled, "carryover": bool(game["carryover"]), }) @@ -449,6 +454,7 @@ async def game_page(game_id: str, request: Request, user: dict = Depends(get_cur "skin_value": game["skin_value"], "skin_double_back9": bool(game["skin_double_back_nine"]), "skins_net": bool(game["skins_net"]), + "side_skins_enabled": bool(game.get("side_skins_enabled", 0)), }) diff --git a/app/templates/games/game.html b/app/templates/games/game.html index c19b813..a3f3514 100644 --- a/app/templates/games/game.html +++ b/app/templates/games/game.html @@ -11,10 +11,10 @@ {# ── Header ── #}