# settings = { "prefix": "to", "PK": "IDENTITY", "semantics": "CHAR", "auditCols": true } -- Turnout: Quick SQL first draft -- Kathuko APEX 26.2 from Zero, Part 2, Lesson 2.9 -- -- Paste into SQL Workshop > Utilities > Quick SQL and generate. -- This draft is deliberately "good enough, not finished". In the lesson we -- compare its output with turnout_schema.sql and list what a generator -- can't decide for us: -- * composite unique keys (one membership per person per club) -- * "only one owner per club" (a function-based unique index) -- * rules that compare two columns (an event must end after it starts) -- * a 1:1 table keyed by its parent (event weather) -- * which foreign keys should cascade on delete categories name vc60 /nn /unique icon vc60 sort_order int /default 10 is_active vc1 /nn /check Y, N /default Y users email vc255 /nn /unique display_name vc100 /nn preferred_language vc5 /nn /check en, es /default en time_zone vc64 email_verified_at tstz is_active vc1 /nn /check Y, N /default Y user_identities provider vc20 /nn /check EMAIL, GOOGLE, MICROSOFT, GITHUB subject vc255 /nn provider_email vc255 last_login_at tstz clubs category_id /fk categories /nn name vc100 /nn slug vc100 /nn /unique description vc4000 city vc100 time_zone vc64 /nn /default America/New_York visibility vc20 /nn /check PUBLIC, PRIVATE /default PUBLIC join_policy vc20 /nn /check OPEN, APPROVAL, INVITE /default OPEN status vc20 /nn /check PENDING, ACTIVE, SUSPENDED /default PENDING club_members user_id /fk users /nn role vc20 /nn /check OWNER, ORGANIZER, MEMBER /default MEMBER status vc20 /nn /check PENDING, ACTIVE, REMOVED /default PENDING joined_at tstz club_invites email vc255 /nn role vc20 /nn /check ORGANIZER, MEMBER /default MEMBER token_hash vc64 /nn /unique expires_at tstz /nn accepted_at tstz invited_by_user_id /fk users venues name vc100 /nn address vc400 latitude num longitude num notes vc1000 events venue_id /fk venues title vc150 /nn slug vc150 /nn description vc4000 starts_at tstz /nn ends_at tstz /nn capacity int max_guests int /nn /default 0 rsvp_opens_at tstz rsvp_closes_at tstz status vc20 /nn /check DRAFT, PUBLISHED, CANCELLED, COMPLETED /default DRAFT cancel_reason vc400 rsvps user_id /fk users /nn status vc20 /nn /check GOING, WAITLISTED, CANCELLED, ATTENDED, NO_SHOW guests int /nn /default 0 waitlist_position int checkin_token vc64 /unique checked_in_at tstz rsvp_log old_status vc20 new_status vc20 /nn reason vc400 event_weather fetched_at tstz /nn summary vc200 temp_high_c num temp_low_c num precip_chance_pct int forecast clob notifications user_id /fk users /nn template_static_id vc255 /nn placeholders clob status vc20 /nn /check QUEUED, SENT, FAILED /default QUEUED attempts int /nn /default 0 last_error vc4000 sent_at tstz