• 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
Name
Last commit
Last update
.claude Loading commit data...
.impeccable Loading commit data...
ChessPieces Loading commit data...
Connections and docs Loading commit data...
Logo El3ab Loading commit data...
admin Loading commit data...
api Loading commit data...
app icons Loading commit data...
config Loading commit data...
docs Loading commit data...
includes Loading commit data...
ludo-playtest Loading commit data...
migrations Loading commit data...
promo Loading commit data...
public Loading commit data...
screenshots Loading commit data...
test-screenshots Loading commit data...
tests Loading commit data...
tools Loading commit data...
.gitignore Loading commit data...
.htaccess Loading commit data...
ARCHITECTURE.md Loading commit data...
ASSET_REGISTRY.json Loading commit data...
ASSET_REGISTRY.md Loading commit data...
BUILD_ORDER.md Loading commit data...
DATABASE_REFERENCE.md Loading commit data...
DESIGN.md Loading commit data...
Dockerfile Loading commit data...
FIX_PLAN.md Loading commit data...
HANDOVER.md Loading commit data...
MULTIPLAYER_RULES.md Loading commit data...
PLAN.md Loading commit data...
PRODUCT.md Loading commit data...
ROADMAP.md Loading commit data...
Stockfishbotsapi.txt Loading commit data...
WTF.md Loading commit data...
backgammon-test.mjs Loading commit data...
bell.png Loading commit data...
captain-definition Loading commit data...
chess-browser-test.mjs Loading commit data...
chess-multiplayer-test.mjs Loading commit data...
chess-sync-test.mjs Loading commit data...
domino-test.mjs Loading commit data...
index.php Loading commit data...
logof.png Loading commit data...
manifest.json Loading commit data...
package-lock.json Loading commit data...
package.json Loading commit data...
privacy-policy.php Loading commit data...
qr-code.png Loading commit data...
terms.php Loading commit data...
test-tournament-swiss.mjs Loading commit data...
test-tournament-ui.mjs Loading commit data...