Profiles & cities
profile_claims
"This is me / my venue" requests for existing profiles. An admin approves (→ profile_members owner row + profiles.claimed) or rejects.
Columns
| Column | Type | Null | Default | Keys |
|---|---|---|---|---|
| id | uuid | no | gen_random_uuid() | PK |
| profile_id | uuid | no | — | |
| dancer_id | uuid | no | — | |
| message | text | no | "" | |
| status | text pendingapprovedrejectedinfo_required | no | "pending" | |
| kind | text claimjoinreclaim | no | "claim" | |
| requested_role | text ownereditor | no | "owner" | |
| title | text | yes | — | |
| evidence | text | no | "" | |
| evidence_type | text domain_emailsocial_mediawebsite_linkdocumentationother | no | "other" | |
| reviewer_note | text | no | "" | |
| decided_by | uuid | yes | — | |
| created_at | timestamp | yes | now() | |
| decided_at | timestamp | yes | — |
Value lists come from .$type<'a' | 'b'>() in the schema — enforced in TypeScript only, not by the database.
Keys, constraints & indexes
Used by
Code that reads or writes this table, found by static analysis of the tRPC routers and API handlers (including helpers they call).
tRPC procedures
REST & webhooks
- ANY /mcp
- ANY /mcp/public
Relations
Rendering diagram…
Diagram source
erDiagram
dancers {
uuid id PK
text email UK
text neon_auth_id UK
text username UK
}
profile_claims {
uuid id PK
uuid profile_id FK
uuid dancer_id FK
uuid decided_by FK
}
profiles {
uuid id PK
text username UK
}
profiles ||--o{ profile_claims : "profile_id"
dancers ||--o{ profile_claims : "dancer_id"
dancers |o--o{ profile_claims : "decided_by" Defined at server/database/schema.ts:423 as profileClaims.