Skip to content
Festivals & ticketing

festival_waves

RAZ-82: "Wave" social gesture — a lightweight, per-festival expression of "I'd love to dance with you there." Mutual waves = festival friends.

Columns

ColumnTypeNullDefaultKeys
iduuid nogen_random_uuid()
PK
festival_slugtext no—
dancer_iduuid no—
target_dancer_iduuid no—
created_attimestamp yesnow()

Value lists come from .$type<'a' | 'b'>() in the schema — enforced in TypeScript only, not by the database.

Keys, constraints & indexes

Unique

  • (festival_slug, dancer_id, target_dancer_id) festival_wave_unique

Indexes

  • (festival_slug, target_dancer_id)
    festival_waves_target_idx

Foreign keys

  • dancer_id → dancers.id
    on delete no action
  • target_dancer_id → dancers.id
    on delete no action

Used by

Code that reads or writes this table, found by static analysis of the tRPC routers and API handlers (including helpers they call).

Relations

Rendering diagram…

Diagram source
erDiagram
  dancers {
    uuid id PK
    text email UK
    text neon_auth_id UK
    text username UK
  }
  festival_waves {
    uuid id PK
    uuid dancer_id FK
    uuid target_dancer_id FK
  }
  dancers ||--o{ festival_waves : "dancer_id"
  dancers ||--o{ festival_waves : "target_dancer_id"

Defined at server/database/schema.ts:1004 as festivalWaves.