44 lines
2.4 KiB
SQL
44 lines
2.4 KiB
SQL
CREATE TABLE "instance_agents" (
|
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
"updated_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
"name" text NOT NULL,
|
|
"description" text,
|
|
"token_prefix" text NOT NULL,
|
|
"token_hash" text NOT NULL,
|
|
"active" boolean DEFAULT true NOT NULL,
|
|
"capabilities" jsonb DEFAULT '{"scan":true,"print":false}'::jsonb NOT NULL,
|
|
"scanner_names" jsonb DEFAULT '[]'::jsonb NOT NULL,
|
|
"printer_names" jsonb DEFAULT '[]'::jsonb NOT NULL,
|
|
"last_seen_at" timestamp with time zone,
|
|
"last_debug_info" jsonb,
|
|
CONSTRAINT "instance_agents_token_hash_unique" UNIQUE("token_hash")
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "instance_agent_scan_jobs" (
|
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
"updated_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
"tenant_id" bigint NOT NULL,
|
|
"agent_id" uuid NOT NULL,
|
|
"requested_by" uuid,
|
|
"status" text DEFAULT 'pending' NOT NULL,
|
|
"scanner_name" text,
|
|
"requested_filename" text,
|
|
"settings" jsonb DEFAULT '{}'::jsonb NOT NULL,
|
|
"target" jsonb DEFAULT '{}'::jsonb NOT NULL,
|
|
"agent_message" text,
|
|
"attempts" integer DEFAULT 0 NOT NULL,
|
|
"claimed_at" timestamp with time zone,
|
|
"finished_at" timestamp with time zone,
|
|
"file_id" uuid,
|
|
CONSTRAINT "instance_agent_scan_jobs_tenant_id_tenants_id_fk" FOREIGN KEY ("tenant_id") REFERENCES "public"."tenants"("id") ON DELETE cascade ON UPDATE cascade,
|
|
CONSTRAINT "instance_agent_scan_jobs_agent_id_instance_agents_id_fk" FOREIGN KEY ("agent_id") REFERENCES "public"."instance_agents"("id") ON DELETE cascade ON UPDATE cascade,
|
|
CONSTRAINT "instance_agent_scan_jobs_requested_by_auth_users_id_fk" FOREIGN KEY ("requested_by") REFERENCES "public"."auth_users"("id") ON DELETE set null ON UPDATE cascade,
|
|
CONSTRAINT "instance_agent_scan_jobs_file_id_files_id_fk" FOREIGN KEY ("file_id") REFERENCES "public"."files"("id") ON DELETE set null ON UPDATE cascade
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE INDEX "instance_agent_scan_jobs_agent_status_idx" ON "instance_agent_scan_jobs" USING btree ("agent_id","status","created_at");
|
|
--> statement-breakpoint
|
|
CREATE INDEX "instance_agent_scan_jobs_tenant_idx" ON "instance_agent_scan_jobs" USING btree ("tenant_id","created_at");
|