Source: ihnyc-games/infra/d1/schema.sql
Tables
events
- id (TEXT, PK)
- title (TEXT)
- sport (TEXT)
- description (TEXT)
- location (TEXT)
- start_at (TEXT)
- end_at (TEXT)
- capacity (INTEGER)
- form_url (TEXT)
- source_label (TEXT)
- created_at (TEXT)
results
- id (TEXT, PK)
- event_id (TEXT, FK → events.id)
- floor_number (INTEGER)
- placement (INTEGER)
- points (INTEGER)
- medal (TEXT: gold|silver|bronze|NULL)
- created_at (TEXT)
import_runs
- id (TEXT, PK)
- created_at (TEXT)
- rows_read (INTEGER)
- inserted (INTEGER)
- skipped (INTEGER)
- errors_json (TEXT)
signup_submissions
- id (TEXT, PK)
- import_run_id (TEXT, FK → import_runs.id)
- name (TEXT)
- email (TEXT)
- room (TEXT)
- floor_number (INTEGER)
- raw_json (TEXT)
- created_at (TEXT)
submission_event_choices
- id (TEXT, PK)
- submission_id (TEXT, FK → signup_submissions.id)
- event_id (TEXT, FK → events.id)
- source_label (TEXT)
- created_at (TEXT)
Import matching rules
- Match event choices by exact
events.source_label. - If no exact match, fallback to prefix match on
events.title. - All raw submissions are stored, even if mapping fails.
Indexes
- events(start_at)
- results(event_id), results(floor_number)
- import_runs(created_at)
- signup_submissions(name, room, floor_number)
- submission_event_choices(submission_id, event_id)