-- Initial schema for otto trips and activities

CREATE TABLE IF NOT EXISTS "trips" (
  "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
  "destination" text NOT NULL,
  "lat" numeric,
  "lng" numeric,
  "start_date" timestamptz,
  "num_days" integer NOT NULL,
  "total_budget" numeric,
  "currency" text DEFAULT 'EUR',
  "preferences" jsonb DEFAULT '[]'::jsonb,
  "experience_mode" text DEFAULT 'balanced',
  "estimated_total_cost" numeric,
  "created_at" timestamptz DEFAULT now()
);

CREATE TABLE IF NOT EXISTS "activities" (
  "id" serial PRIMARY KEY NOT NULL,
  "trip_id" uuid,
  "day_number" integer NOT NULL,
  "start_time" text,
  "title" text NOT NULL,
  "type" text NOT NULL,
  "estimated_cost" numeric,
  "address" text,
  "lat" numeric,
  "lng" numeric,
  "rating" numeric,
  "source" text,
  "source_url" text,
  "notes" text,
  "order_in_day" integer DEFAULT 0,
  CONSTRAINT "activities_trip_id_fkey" FOREIGN KEY ("trip_id") REFERENCES "trips"("id") ON DELETE cascade
);

-- Helpful indexes
CREATE INDEX IF NOT EXISTS "trips_created_at_idx" ON "trips" ("created_at");
