Skip to content
Identity & auth

dancers

Columns

ColumnTypeNullDefaultKeys
iduuid nogen_random_uuid()
PK
emailtext no—
unique
nametext no—
phototext yes—
dance_stylesjson yes[]
dance_levelsjsonb no{}
roletext yes—
citytext yes—
neon_auth_idtext yes—
unique
is_adminboolean yesfalse
usernametext yes—
unique
old_usernamesjsonb no[]
biotext yes—
instagramtext yes—
youtubetext yes—
websitetext yes—
profile_publicboolean yestrue
salttext yes""
hashtext yes""
intenttext yes—
onboarded_attimestamp yes—
magic_tokentext yes—
magic_token_expires_attimestamp yes—
email_verified_attimestamp yes—
source_refjsonb yes—
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

  • (email) dancers_email_unique
  • (neon_auth_id) dancers_neon_auth_id_unique
  • (username) dancers_username_unique

Indexes

No secondary indexes.

Foreign keys

None.

Referenced by

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
  ai_usage {
    uuid id PK
    uuid event_id FK
    uuid flyer_id FK
    uuid dancer_id FK
  }
  attendances {
    uuid id PK
    uuid event_id FK
    uuid dancer_id FK
  }
  booking_inquiries {
    uuid id PK
    uuid profile_id FK
    uuid requester_id FK
  }
  booking_requests {
    uuid id PK
    uuid space_id FK
    uuid profile_id FK
    uuid organizer_id FK
    uuid requester_id FK
    uuid moderated_by_id FK
  }
  brand_looks {
    uuid id PK
    uuid profile_id FK
    uuid created_by FK
  }
  city_battle_votes {
    uuid id PK
    uuid voter_dancer_id FK
  }
  city_videos {
    uuid id PK
    uuid dancer_id FK
  }
  community_group_reports {
    uuid id PK
    uuid group_id FK
    uuid dancer_id FK
  }
  dancer_goals {
    uuid id PK
    uuid dancer_id FK
  }
  dancers {
    uuid id PK
    text email UK
    text neon_auth_id UK
    text username UK
  }
  dinner_group_members {
    uuid id PK
    uuid group_id FK
    uuid dancer_id FK
  }
  dinner_signups {
    uuid id PK
    uuid dinner_id FK
    uuid dancer_id FK
  }
  discover_swipes {
    uuid id PK
    uuid dancer_id FK
  }
  election_candidates {
    uuid id PK
    uuid election_id FK
    uuid dancer_id FK
  }
  election_vote_history {
    uuid id PK
    uuid election_id FK
    uuid voter_dancer_id FK
  }
  election_votes {
    uuid id PK
    uuid election_id FK
    uuid voter_dancer_id FK
    uuid candidate_id FK
  }
  event_flyers {
    uuid id PK
    uuid event_id FK
    uuid post_id FK
    uuid look_id FK
    uuid created_by FK
  }
  event_posts {
    uuid id PK
    uuid event_id FK
    uuid created_by FK
  }
  events {
    uuid id PK
    uuid host_profile_id FK
    uuid edited_by FK
  }
  festival_ride_shares {
    uuid id PK
    uuid festival_id FK
    uuid dancer_id FK
  }
  festival_roommate_lookups {
    uuid id PK
    uuid festival_id FK
    uuid dancer_id FK
  }
  festival_signups {
    uuid id PK
    uuid festival_id FK
    uuid dancer_id FK
    text tickettailor_order_id UK
  }
  festival_submissions {
    uuid id PK
    uuid submitted_by_id FK
  }
  festival_waves {
    uuid id PK
    uuid dancer_id FK
    uuid target_dancer_id FK
  }
  follows {
    uuid id PK
    uuid dancer_id FK
    uuid profile_id FK
    uuid target_dancer_id FK
  }
  gig_applications {
    uuid id PK
    uuid gig_id FK
    uuid dancer_id FK
    uuid profile_id FK
    uuid decided_by FK
  }
  gigs {
    uuid id PK
    uuid dancer_id FK
    uuid poster_profile_id FK
  }
  giveaway_entries {
    uuid id PK
    uuid giveaway_id FK
    uuid dancer_id FK
  }
  giveaway_proposals {
    uuid id PK
    uuid event_id FK
    uuid proposed_by FK
    uuid profile_id FK
    uuid giveaway_id FK
    uuid decided_by FK
  }
  guideline_versions {
    uuid id PK
    uuid profile_id FK
    uuid election_id FK
    uuid moderator_dancer_id FK
  }
  handles {
    text handle PK
    uuid dancer_id FK,UK
    uuid profile_id FK,UK
  }
  hangout_rsvps {
    uuid id PK
    uuid hangout_id FK
    uuid dancer_id FK
  }
  hangouts {
    uuid id PK
    uuid event_id FK
    uuid dancer_id FK
  }
  inbound_requests {
    uuid id PK
    uuid dancer_id FK
    uuid event_id FK
    uuid profile_id FK
    uuid gig_id FK
  }
  legacy_follows {
    uuid id PK
    uuid dancer_id FK
  }
  mcp_audit {
    uuid id PK
    uuid grant_id FK
    uuid dancer_id FK
    uuid profile_id FK
    text confirm_nonce UK
  }
  network_links {
    uuid id PK
    uuid profile_id FK
    uuid other_profile_id FK
    uuid created_by FK
  }
  oauth_grants {
    uuid id PK
    uuid dancer_id FK
    text client_id FK
  }
  organizer_subscriptions {
    uuid id PK
    uuid profile_id FK
    uuid dancer_id FK
    text stripe_subscription_id UK
  }
  plan_items {
    uuid id PK
    uuid dancer_id FK
  }
  profile_access_log {
    uuid id PK
    uuid profile_id FK
    uuid actor_id FK
    uuid subject_id FK
  }
  profile_claims {
    uuid id PK
    uuid profile_id FK
    uuid dancer_id FK
    uuid decided_by FK
  }
  profile_contacts {
    uuid id PK
    uuid profile_id FK
    uuid dancer_id FK
  }
  profile_invites {
    uuid id PK
    uuid profile_id FK
    uuid event_id FK
    uuid created_by FK
  }
  profile_members {
    uuid id PK
    uuid profile_id FK
    uuid dancer_id FK
    uuid added_by FK
  }
  profile_sites {
    uuid profile_id PK,FK
    uuid updated_by FK
  }
  profile_suggestions {
    uuid id PK
    uuid profile_id FK
    uuid event_id FK
    uuid suggested_by FK
  }
  recommendation_requests {
    uuid id PK
    uuid asker_id FK
  }
  referrals {
    uuid id PK
    uuid festival_id FK
    uuid referrer_id FK
    uuid referee_id FK
  }
  reviews {
    uuid id PK
    uuid dancer_id FK
  }
  sessions {
    uuid id PK
    uuid dancer_id FK
    text token UK
  }
  tracked_link_actions {
    uuid id PK
    uuid link_id FK
    uuid dancer_id FK
  }
  tracked_links {
    uuid id PK
    text code UK
    uuid event_id FK
    uuid profile_id FK
    uuid created_by FK
  }
  video_votes {
    uuid id PK
    uuid winner_video_id FK
    uuid loser_video_id FK
    uuid voter_dancer_id FK
  }
  events |o--o{ ai_usage : "event_id"
  event_flyers |o--o{ ai_usage : "flyer_id"
  dancers |o--o{ ai_usage : "dancer_id"
  events ||--o{ attendances : "event_id"
  dancers |o--o{ attendances : "dancer_id"
  dancers |o--o{ booking_inquiries : "requester_id"
  dancers |o--o{ booking_requests : "requester_id"
  dancers |o--o{ booking_requests : "moderated_by_id"
  dancers |o--o{ brand_looks : "created_by"
  dancers |o--o{ city_battle_votes : "voter_dancer_id"
  dancers |o--o{ city_videos : "dancer_id"
  dancers ||--o{ community_group_reports : "dancer_id"
  dancers ||--o{ dancer_goals : "dancer_id"
  dancers ||--o{ dinner_group_members : "dancer_id"
  dancers ||--o{ dinner_signups : "dancer_id"
  dancers ||--o{ discover_swipes : "dancer_id"
  dancers ||--o{ election_candidates : "dancer_id"
  dancers ||--o{ election_vote_history : "voter_dancer_id"
  dancers ||--o{ election_votes : "voter_dancer_id"
  election_candidates ||--o{ election_votes : "candidate_id"
  events ||--o{ event_flyers : "event_id"
  event_posts |o--o{ event_flyers : "post_id"
  brand_looks |o--o{ event_flyers : "look_id"
  dancers |o--o{ event_flyers : "created_by"
  events ||--o{ event_posts : "event_id"
  dancers |o--o{ event_posts : "created_by"
  dancers |o--o{ events : "edited_by"
  dancers ||--o{ festival_ride_shares : "dancer_id"
  dancers ||--o{ festival_roommate_lookups : "dancer_id"
  dancers |o--o{ festival_signups : "dancer_id"
  dancers |o--o{ festival_submissions : "submitted_by_id"
  dancers ||--o{ festival_waves : "dancer_id"
  dancers ||--o{ festival_waves : "target_dancer_id"
  dancers ||--o{ follows : "dancer_id"
  dancers |o--o{ follows : "target_dancer_id"
  gigs ||--o{ gig_applications : "gig_id"
  dancers ||--o{ gig_applications : "dancer_id"
  dancers |o--o{ gig_applications : "decided_by"
  dancers |o--o{ gigs : "dancer_id"
  dancers |o--o{ giveaway_entries : "dancer_id"
  events ||--o{ giveaway_proposals : "event_id"
  dancers |o--o{ giveaway_proposals : "proposed_by"
  dancers |o--o{ giveaway_proposals : "decided_by"
  dancers |o--o{ guideline_versions : "moderator_dancer_id"
  dancers |o--o{ handles : "dancer_id"
  hangouts ||--o{ hangout_rsvps : "hangout_id"
  dancers ||--o{ hangout_rsvps : "dancer_id"
  events |o--o{ hangouts : "event_id"
  dancers ||--o{ hangouts : "dancer_id"
  dancers |o--o{ inbound_requests : "dancer_id"
  events |o--o{ inbound_requests : "event_id"
  gigs |o--o{ inbound_requests : "gig_id"
  dancers ||--o{ legacy_follows : "dancer_id"
  oauth_grants |o--o{ mcp_audit : "grant_id"
  dancers |o--o{ mcp_audit : "dancer_id"
  dancers |o--o{ network_links : "created_by"
  dancers ||--o{ oauth_grants : "dancer_id"
  dancers ||--o{ organizer_subscriptions : "dancer_id"
  dancers ||--o{ plan_items : "dancer_id"
  dancers |o--o{ profile_access_log : "actor_id"
  dancers |o--o{ profile_access_log : "subject_id"
  dancers ||--o{ profile_claims : "dancer_id"
  dancers |o--o{ profile_claims : "decided_by"
  dancers |o--o{ profile_contacts : "dancer_id"
  events |o--o{ profile_invites : "event_id"
  dancers |o--o{ profile_invites : "created_by"
  dancers ||--o{ profile_members : "dancer_id"
  dancers |o--o{ profile_members : "added_by"
  dancers |o--o{ profile_sites : "updated_by"
  events |o--o{ profile_suggestions : "event_id"
  dancers |o--o{ profile_suggestions : "suggested_by"
  dancers ||--o{ recommendation_requests : "asker_id"
  dancers ||--o{ referrals : "referrer_id"
  dancers ||--o{ referrals : "referee_id"
  dancers ||--o{ reviews : "dancer_id"
  dancers ||--o{ sessions : "dancer_id"
  tracked_links ||--o{ tracked_link_actions : "link_id"
  dancers |o--o{ tracked_link_actions : "dancer_id"
  events ||--o{ tracked_links : "event_id"
  dancers |o--o{ tracked_links : "created_by"
  city_videos ||--o{ video_votes : "winner_video_id"
  city_videos ||--o{ video_votes : "loser_video_id"
  dancers |o--o{ video_votes : "voter_dancer_id"

Defined at server/database/schema.ts:18 as dancers.