mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
120 lines
4.4 KiB
SQL
120 lines
4.4 KiB
SQL
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;
|