feat(db): the big-tournament hosting schema (P0)
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:
Claude Opus 5.5 <noreply@anthropic.com>
Showing
This diff is collapsed.
Please register or sign in to comment