Files
SnapOtter/apps/api/drizzle/0000_postgres_baseline.sql
T

120 lines
4.4 KiB
SQL
Raw Normal View History

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;