• Mahmoud Aglan's avatar
    feat(db): the big-tournament hosting schema (P0) · 873278e4
    Mahmoud Aglan authored
    One idempotent migration for every hosting package: stages carry their own
    rounds, teams, team matches and stage entries, playable brackets, check-in,
    waitlist, registration forms and answers, prize categories and a prize hold,
    presentation (media, sponsors, ad slots, announcements), disputes,
    certificates, notices, forbidden pairs, tournament columns on the backgammon,
    domino and ludo tables, and club and lobby groups. Two storage buckets:
    tournament-media (public) and tournament-uploads (private).
    
    The 21 tournament tables keep RLS on with the service role only: anon and
    authenticated hold no grant at all (they read nothing there today; RLS had
    no policy for them). el3ab_tournaments and el3ab_tournament_rounds keep the
    read policies Realtime needs.
    
    Applied to production on 2026-10-26 after a backup in
    /root/backups/2026-10-27-hosting-schema/, then run a second time: the schema
    dumps before and after the second run are identical, and the 9 tournaments,
    16 registrations and 39 rounds are unchanged (the 4 legacy string pairings
    hold objects, so none was unwrapped). A commented rollback block is at the end
    of the file, tested inside BEGIN/ROLLBACK on production.
    
    Departures from the spec, each recorded in docs/tournament-hosting-contract.md:
    'unpaired' rounds stay legal only for the old Swiss service, a team event must
    have a team size, dispute_window_minutes gets a column, groups get kind and
    tournament_id.
    Co-Authored-By: 's avatarClaude Opus 5.5 <noreply@anthropic.com>
    873278e4
2026-10-27-hosting-schema.sql 48.6 KB