CREATE TYPE "public"."job_status" AS ENUM('queued', 'processing', 'completed', 'failed');--> statement-breakpoint CREATE TABLE "api_keys" ( "id" text PRIMARY KEY NOT NULL, "user_id" text NOT NULL, "key_hash" text NOT NULL, "key_prefix" text, "name" text DEFAULT 'Default API Key' NOT NULL, "permissions" jsonb, "created_at" timestamp with time zone NOT NULL, "last_used_at" timestamp with time zone, "expires_at" timestamp with time zone ); --> statement-breakpoint CREATE TABLE "audit_log" ( "id" text PRIMARY KEY NOT NULL, "actor_id" text, "actor_username" text NOT NULL, "action" text NOT NULL, "target_type" text, "target_id" text, "details" jsonb, "ip_address" text, "created_at" timestamp with time zone NOT NULL ); --> statement-breakpoint CREATE TABLE "jobs" ( "id" text PRIMARY KEY NOT NULL, "type" text NOT NULL, "status" "job_status" DEFAULT 'queued' NOT NULL, "progress" real DEFAULT 0 NOT NULL, "input_files" jsonb NOT NULL, "output_path" text, "settings" jsonb, "error" text, "created_at" timestamp with time zone NOT NULL, "completed_at" timestamp with time zone ); --> statement-breakpoint CREATE TABLE "pipelines" ( "id" text PRIMARY KEY NOT NULL, "user_id" text, "name" text NOT NULL, "description" text, "steps" jsonb NOT NULL, "created_at" timestamp with time zone NOT NULL ); --> statement-breakpoint CREATE TABLE "roles" ( "id" text PRIMARY KEY NOT NULL, "name" text NOT NULL, "description" text DEFAULT '' NOT NULL, "permissions" jsonb NOT NULL, "is_builtin" boolean DEFAULT false NOT NULL, "created_by" text, "created_at" timestamp with time zone NOT NULL, "updated_at" timestamp with time zone NOT NULL, CONSTRAINT "roles_name_unique" UNIQUE("name") ); --> statement-breakpoint CREATE TABLE "sessions" ( "id" text PRIMARY KEY NOT NULL, "user_id" text NOT NULL, "expires_at" timestamp with time zone NOT NULL, "id_token" text, "created_at" timestamp with time zone NOT NULL ); --> statement-breakpoint CREATE TABLE "settings" ( "key" text PRIMARY KEY NOT NULL, "value" text NOT NULL, "updated_at" timestamp with time zone NOT NULL ); --> statement-breakpoint CREATE TABLE "teams" ( "id" text PRIMARY KEY NOT NULL, "name" text NOT NULL, "created_at" timestamp with time zone NOT NULL, CONSTRAINT "teams_name_unique" UNIQUE("name") ); --> statement-breakpoint CREATE TABLE "user_files" ( "id" text PRIMARY KEY NOT NULL, "user_id" text, "original_name" text NOT NULL, "stored_name" text NOT NULL, "mime_type" text NOT NULL, "size" integer NOT NULL, "width" integer, "height" integer, "version" integer DEFAULT 1 NOT NULL, "parent_id" text, "tool_chain" jsonb, "created_at" timestamp with time zone NOT NULL ); --> statement-breakpoint CREATE TABLE "users" ( "id" text PRIMARY KEY NOT NULL, "username" text NOT NULL, "password_hash" text, "role" text DEFAULT 'user' NOT NULL, "team" text DEFAULT 'Default' NOT NULL, "must_change_password" boolean DEFAULT true NOT NULL, "auth_provider" text DEFAULT 'local' NOT NULL, "external_id" text, "email" text, "created_at" timestamp with time zone NOT NULL, "updated_at" timestamp with time zone NOT NULL, "analytics_enabled" boolean, "analytics_consent_shown_at" timestamp with time zone, "analytics_consent_remind_at" timestamp with time zone, CONSTRAINT "users_username_unique" UNIQUE("username") ); --> statement-breakpoint ALTER TABLE "api_keys" ADD CONSTRAINT "api_keys_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint ALTER TABLE "audit_log" ADD CONSTRAINT "audit_log_actor_id_users_id_fk" FOREIGN KEY ("actor_id") REFERENCES "public"."users"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint ALTER TABLE "pipelines" ADD CONSTRAINT "pipelines_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint ALTER TABLE "roles" ADD CONSTRAINT "roles_created_by_users_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."users"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sessions" ADD CONSTRAINT "sessions_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint ALTER TABLE "user_files" ADD CONSTRAINT "user_files_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;