CREATE TABLE IF NOT EXISTS "setup_runs" (
  "id" text PRIMARY KEY NOT NULL,
  "status" text DEFAULT 'not_started' NOT NULL,
  "mode" text DEFAULT 'production' NOT NULL,
  "target_organization_id" text,
  "started_by" text NOT NULL,
  "completed_by" text,
  "started_at" timestamp with time zone DEFAULT now() NOT NULL,
  "completed_at" timestamp with time zone,
  "last_error" text,
  "metadata" jsonb,
  "created_at" timestamp with time zone DEFAULT now() NOT NULL,
  "updated_at" timestamp with time zone DEFAULT now() NOT NULL
);
--> statement-breakpoint
CREATE TABLE IF NOT EXISTS "setup_run_steps" (
  "id" text PRIMARY KEY NOT NULL,
  "setup_run_id" text NOT NULL,
  "step_key" text NOT NULL,
  "status" text DEFAULT 'not_started' NOT NULL,
  "input_hash" text,
  "output_json" jsonb,
  "errors_json" jsonb,
  "warnings_json" jsonb,
  "started_at" timestamp with time zone,
  "completed_at" timestamp with time zone,
  "created_at" timestamp with time zone DEFAULT now() NOT NULL,
  "updated_at" timestamp with time zone DEFAULT now() NOT NULL
);
--> statement-breakpoint
CREATE UNIQUE INDEX IF NOT EXISTS "setup_run_steps_run_step_idx" ON "setup_run_steps" ("setup_run_id","step_key");
--> statement-breakpoint
CREATE TABLE IF NOT EXISTS "seed_manifests" (
  "id" text PRIMARY KEY NOT NULL,
  "setup_run_id" text,
  "organization_id" text,
  "name" text NOT NULL,
  "version" text NOT NULL,
  "type" text NOT NULL,
  "checksum" text NOT NULL,
  "status" text DEFAULT 'pending' NOT NULL,
  "source" text NOT NULL,
  "applied_by" text,
  "applied_at" timestamp with time zone,
  "report_json" jsonb,
  "created_at" timestamp with time zone DEFAULT now() NOT NULL,
  "updated_at" timestamp with time zone DEFAULT now() NOT NULL
);
--> statement-breakpoint
CREATE TABLE IF NOT EXISTS "seed_manifest_items" (
  "id" text PRIMARY KEY NOT NULL,
  "seed_manifest_id" text NOT NULL,
  "item_key" text NOT NULL,
  "source_file" text NOT NULL,
  "checksum" text NOT NULL,
  "status" text DEFAULT 'pending' NOT NULL,
  "imported_count" integer DEFAULT 0 NOT NULL,
  "updated_count" integer DEFAULT 0 NOT NULL,
  "skipped_count" integer DEFAULT 0 NOT NULL,
  "error_count" integer DEFAULT 0 NOT NULL,
  "warning_count" integer DEFAULT 0 NOT NULL,
  "report_json" jsonb,
  "created_at" timestamp with time zone DEFAULT now() NOT NULL,
  "updated_at" timestamp with time zone DEFAULT now() NOT NULL
);
--> statement-breakpoint
CREATE UNIQUE INDEX IF NOT EXISTS "seed_manifest_items_manifest_item_idx" ON "seed_manifest_items" ("seed_manifest_id","item_key");
