Spørsmålene dine avdekket en reell bug (ikke bare et åpent spørsmål): siden ingenting eksplisitt lukker en match, kan noen fortsette å legge inn hull etter at matchen matematisk er avgjort, og det kan endre den cachede marginen ved neste omregning. Fanget i FEATURE_BACKLOG.md. Basert på svarene dine: Match-lås bygges snart — neste lille runde, tetter spøkelses-hull-buggen. Walkover/konsesjon venter til brukerroller (kaptein/organisator) er avgjort. Alt er dokumentert i FEATURE_BACKLOG.md under en ny seksjon, og CLAUDE.md er oppdatert.
23 lines
683 B
Python
23 lines
683 B
Python
"""
|
|
Delt autorisasjonssjekk: er brukeren rostret på et gitt lag?
|
|
|
|
Brukt av både matches.py (deltaker/lås-skriving) og scoring.py (score-skriving)
|
|
— se plan for begrunnelsen (bevisst IKKE kapteins-only ennå, FEATURE_BACKLOG).
|
|
"""
|
|
|
|
from asyncpg import Connection
|
|
|
|
|
|
async def user_may_act_for_team(conn: Connection, team_id: str, user_id: str) -> bool:
|
|
"""Brukeren har en team_roster-rad på laget."""
|
|
return await conn.fetchval(
|
|
"""
|
|
SELECT EXISTS (
|
|
SELECT 1 FROM team_roster tr
|
|
JOIN player p ON p.id = tr.player_id
|
|
WHERE tr.team_id = $1 AND p.user_id = $2
|
|
)
|
|
""",
|
|
team_id,
|
|
user_id,
|
|
)
|