-- Migration: Initial schema setup CREATE TABLE profiles ( id UUID PRIMARY KEY, full_name TEXT NOT NULL, date_of_birth DATE NOT NULL, gender TEXT, preferred_gender TEXT, phone_number TEXT, email TEXT, facebook_link TEXT, photo_reference TEXT, location TEXT, team TEXT, hobbies JSONB, things_not_tried JSONB, hopes_for_partner TEXT, dealbreakers TEXT, message_to_partner TEXT, zodiac_sign TEXT, access_code TEXT, personal_link TEXT, accepted_terms BOOLEAN DEFAULT FALSE, registration_timestamp TIMESTAMP WITH TIME ZONE NOT NULL, status TEXT, is_lucky_winner BOOLEAN DEFAULT FALSE, created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() ); CREATE TABLE match_outcomes ( id UUID PRIMARY KEY, profile_id UUID REFERENCES profiles(id), potential_match_profile_ids JSONB, match_scores JSONB, status TEXT, selected_profile_id UUID, generation_timestamp TIMESTAMP WITH TIME ZONE NOT NULL, accessed_timestamp TIMESTAMP WITH TIME ZONE, selection_timestamp TIMESTAMP WITH TIME ZONE, created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() ); CREATE TABLE gifts ( id UUID PRIMARY KEY, name TEXT NOT NULL, description TEXT, quantity INT DEFAULT 0, created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() ); CREATE TABLE gift_allocations ( id UUID PRIMARY KEY, gift_id UUID REFERENCES gifts(id), match_outcome_id UUID REFERENCES match_outcomes(id), allocated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() );