| -- WARNING: This schema is for context only and is not meant to be run. |
| -- Table order and constraints may not be valid for execution. |
|
|
| CREATE TABLE public.bookings ( |
| id uuid NOT NULL DEFAULT uuid_generate_v4(), |
| user_id uuid NOT NULL, |
| itinerary_id uuid, |
| stop_id uuid, |
| provider text NOT NULL, |
| type text NOT NULL, |
| external_id text NOT NULL, |
| status text NOT NULL DEFAULT 'pending'::text, |
| price numeric, |
| currency text NOT NULL DEFAULT 'VND'::text, |
| place_id text, |
| raw_request jsonb, |
| raw_response jsonb, |
| created_at timestamp with time zone NOT NULL DEFAULT now(), |
| updated_at timestamp with time zone NOT NULL DEFAULT now(), |
| CONSTRAINT bookings_pkey PRIMARY KEY (id), |
| CONSTRAINT bookings_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.profiles(id), |
| CONSTRAINT bookings_itinerary_id_fkey FOREIGN KEY (itinerary_id) REFERENCES public.itineraries(id), |
| CONSTRAINT bookings_stop_id_fkey FOREIGN KEY (stop_id) REFERENCES public.itinerary_stops(id) |
| ); |
| CREATE TABLE public.itineraries ( |
| id uuid NOT NULL DEFAULT uuid_generate_v4(), |
| user_id uuid NOT NULL, |
| title text NOT NULL, |
| start_date date, |
| end_date date, |
| total_days integer NOT NULL CHECK (total_days >= 1), |
| total_budget numeric, |
| currency text NOT NULL DEFAULT 'VND'::text, |
| meta jsonb, |
| created_at timestamp with time zone NOT NULL DEFAULT now(), |
| updated_at timestamp with time zone NOT NULL DEFAULT now(), |
| CONSTRAINT itineraries_pkey PRIMARY KEY (id), |
| CONSTRAINT itineraries_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.profiles(id) |
| ); |
| CREATE TABLE public.itinerary_stops ( |
| id uuid NOT NULL DEFAULT uuid_generate_v4(), |
| itinerary_id uuid NOT NULL, |
| day_index integer NOT NULL CHECK (day_index >= 1), |
| order_index integer NOT NULL CHECK (order_index >= 1), |
| place_id text NOT NULL, |
| arrival_time timestamp with time zone, |
| stay_minutes integer, |
| notes text, |
| tags ARRAY, |
| snapshot jsonb, |
| created_at timestamp with time zone NOT NULL DEFAULT now(), |
| updated_at timestamp with time zone NOT NULL DEFAULT now(), |
| CONSTRAINT itinerary_stops_pkey PRIMARY KEY (id), |
| CONSTRAINT itinerary_stops_itinerary_id_fkey FOREIGN KEY (itinerary_id) REFERENCES public.itineraries(id) |
| ); |
| CREATE TABLE public.place_image_embeddings ( |
| id uuid NOT NULL DEFAULT uuid_generate_v4(), |
| place_id text NOT NULL, |
| embedding USER-DEFINED, |
| image_url text, |
| metadata jsonb, |
| created_at timestamp with time zone NOT NULL DEFAULT now(), |
| CONSTRAINT place_image_embeddings_pkey PRIMARY KEY (id) |
| ); |
| CREATE TABLE public.place_text_embeddings ( |
| id uuid NOT NULL DEFAULT uuid_generate_v4(), |
| place_id text NOT NULL, |
| embedding USER-DEFINED, |
| content_type text, |
| source_text text, |
| metadata jsonb, |
| created_at timestamp with time zone NOT NULL DEFAULT now(), |
| CONSTRAINT place_text_embeddings_pkey PRIMARY KEY (id) |
| ); |
| CREATE TABLE public.places_metadata ( |
| place_id text NOT NULL, |
| name text NOT NULL, |
| name_vi text, |
| category text, |
| address text, |
| rating numeric, |
| price_min numeric, |
| price_max numeric, |
| tags ARRAY DEFAULT '{}'::text[], |
| coordinates USER-DEFINED, |
| raw_data jsonb DEFAULT '{}'::jsonb, |
| created_at timestamp with time zone DEFAULT now(), |
| updated_at timestamp with time zone DEFAULT now(), |
| CONSTRAINT places_metadata_pkey PRIMARY KEY (place_id) |
| ); |
| CREATE TABLE public.profiles ( |
| id uuid NOT NULL, |
| full_name text NOT NULL DEFAULT ''::text, |
| phone text, |
| role text NOT NULL DEFAULT 'tourist'::text CHECK (role = ANY (ARRAY['tourist'::text, 'driver'::text, 'admin'::text])), |
| locale text NOT NULL DEFAULT 'vi_VN'::text, |
| avatar_url text, |
| created_at timestamp with time zone NOT NULL DEFAULT now(), |
| updated_at timestamp with time zone NOT NULL DEFAULT now(), |
| CONSTRAINT profiles_pkey PRIMARY KEY (id), |
| CONSTRAINT profiles_id_fkey FOREIGN KEY (id) REFERENCES auth.users(id) |
| ); |
| CREATE TABLE public.spatial_ref_sys ( |
| srid integer NOT NULL CHECK (srid > 0 AND srid <= 998999), |
| auth_name character varying, |
| auth_srid integer, |
| srtext character varying, |
| proj4text character varying, |
| CONSTRAINT spatial_ref_sys_pkey PRIMARY KEY (srid) |
| ); |