import { MigrateUpArgs, MigrateDownArgs, sql } from '@payloadcms/db-postgres'; export async function up({ db }: MigrateUpArgs): Promise { await db.execute(sql` DO $$ BEGIN CREATE TYPE "public"."enum_pages_locale" AS ENUM('en', 'de'); EXCEPTION WHEN duplicate_object THEN null; END $$; CREATE TABLE IF NOT EXISTS "pages" ( "id" serial PRIMARY KEY NOT NULL, "title" varchar NOT NULL, "slug" varchar NOT NULL, "locale" "enum_pages_locale" NOT NULL, "excerpt" varchar, "featured_image_id" integer, "content" jsonb NOT NULL, "updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL, "created_at" timestamp(3) with time zone DEFAULT now() NOT NULL ); ALTER TABLE "pages" ADD CONSTRAINT "pages_featured_image_id_media_id_fk" FOREIGN KEY ("featured_image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action; CREATE INDEX IF NOT EXISTS "pages_featured_image_idx" ON "pages" USING btree ("featured_image_id"); CREATE INDEX IF NOT EXISTS "pages_updated_at_idx" ON "pages" USING btree ("updated_at"); CREATE INDEX IF NOT EXISTS "pages_created_at_idx" ON "pages" USING btree ("created_at"); -- Add pages_id to payload_locked_documents_rels if not already present ALTER TABLE "payload_locked_documents_rels" ADD COLUMN IF NOT EXISTS "pages_id" integer; ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_pages_fk" FOREIGN KEY ("pages_id") REFERENCES "public"."pages"("id") ON DELETE cascade ON UPDATE no action; CREATE INDEX IF NOT EXISTS "payload_locked_documents_rels_pages_id_idx" ON "payload_locked_documents_rels" USING btree ("pages_id"); `); } export async function down({ db }: MigrateDownArgs): Promise { await db.execute(sql` ALTER TABLE "payload_locked_documents_rels" DROP CONSTRAINT IF EXISTS "payload_locked_documents_rels_pages_fk"; ALTER TABLE "payload_locked_documents_rels" DROP COLUMN IF EXISTS "pages_id"; DROP TABLE IF EXISTS "pages" CASCADE; DROP TYPE IF EXISTS "public"."enum_pages_locale"; `); }