-- CreateEnum DO $$ BEGIN CREATE TYPE "DownloadJobStatus" AS ENUM ('DOWNLOADING', 'FINISHED', 'IMPORTING', 'IMPORTED', 'FAILED'); EXCEPTION WHEN duplicate_object THEN null; END $$; -- CreateTable CREATE TABLE IF NOT EXISTS "synology_ds_configs" ( "id" TEXT NOT NULL, "node_id" TEXT NOT NULL, "base_url" TEXT NOT NULL, "username" TEXT NOT NULL, "password_enc" TEXT NOT NULL, "download_destination" TEXT NOT NULL, "download_host_path" TEXT NOT NULL, "four_k_host_path" TEXT NOT NULL, "enabled" BOOLEAN NOT NULL DEFAULT true, "last_ok_at" TIMESTAMP(3), "last_error" TEXT, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "synology_ds_configs_pkey" PRIMARY KEY ("id") ); CREATE UNIQUE INDEX IF NOT EXISTS "synology_ds_configs_node_id_key" ON "synology_ds_configs"("node_id"); DO $$ BEGIN ALTER TABLE "synology_ds_configs" ADD CONSTRAINT "synology_ds_configs_node_id_fkey" FOREIGN KEY ("node_id") REFERENCES "nodes"("id") ON DELETE CASCADE ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN null; END $$; -- CreateTable CREATE TABLE IF NOT EXISTS "download_jobs" ( "id" TEXT NOT NULL, "node_id" TEXT NOT NULL, "status" "DownloadJobStatus" NOT NULL DEFAULT 'DOWNLOADING', "source_uri" TEXT NOT NULL, "source_title" TEXT NOT NULL, "ds_task_id" TEXT, "tmdb_id" INTEGER, "imdb_id" TEXT, "movie_title" TEXT NOT NULL, "movie_year" INTEGER, "poster_url" TEXT, "dest_folder_name" TEXT, "source_path" TEXT, "imported_path" TEXT, "error" TEXT, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "download_jobs_pkey" PRIMARY KEY ("id") ); CREATE INDEX IF NOT EXISTS "download_jobs_status_updated_at_idx" ON "download_jobs"("status", "updated_at"); CREATE INDEX IF NOT EXISTS "download_jobs_node_id_status_idx" ON "download_jobs"("node_id", "status"); DO $$ BEGIN ALTER TABLE "download_jobs" ADD CONSTRAINT "download_jobs_node_id_fkey" FOREIGN KEY ("node_id") REFERENCES "nodes"("id") ON DELETE CASCADE ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN null; END $$;