From ca352fea3a8a6824e310f1163e7997bc646403bc Mon Sep 17 00:00:00 2001 From: Marc Mintel Date: Wed, 25 Feb 2026 00:38:12 +0100 Subject: [PATCH] fix: add missing Pages collection migration for prodMigrations --- .../20260225_003500_add_pages_collection.json | 5 ++ .../20260225_003500_add_pages_collection.ts | 48 +++++++++++++++++++ src/migrations/index.ts | 6 +++ 3 files changed, 59 insertions(+) create mode 100644 src/migrations/20260225_003500_add_pages_collection.json create mode 100644 src/migrations/20260225_003500_add_pages_collection.ts diff --git a/src/migrations/20260225_003500_add_pages_collection.json b/src/migrations/20260225_003500_add_pages_collection.json new file mode 100644 index 00000000..5f743d8e --- /dev/null +++ b/src/migrations/20260225_003500_add_pages_collection.json @@ -0,0 +1,5 @@ +{ + "id": "20260225_003500_add_pages_collection", + "name": "20260225_003500_add_pages_collection", + "batch": 3 +} diff --git a/src/migrations/20260225_003500_add_pages_collection.ts b/src/migrations/20260225_003500_add_pages_collection.ts new file mode 100644 index 00000000..eda1337a --- /dev/null +++ b/src/migrations/20260225_003500_add_pages_collection.ts @@ -0,0 +1,48 @@ +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"; + `); +} diff --git a/src/migrations/index.ts b/src/migrations/index.ts index 0880a26d..8325ff72 100644 --- a/src/migrations/index.ts +++ b/src/migrations/index.ts @@ -1,5 +1,6 @@ import * as migration_20260223_195005_products_collection from './20260223_195005_products_collection'; import * as migration_20260223_195151_remove_sku_unique from './20260223_195151_remove_sku_unique'; +import * as migration_20260225_003500_add_pages_collection from './20260225_003500_add_pages_collection'; export const migrations = [ { @@ -12,4 +13,9 @@ export const migrations = [ down: migration_20260223_195151_remove_sku_unique.down, name: '20260223_195151_remove_sku_unique', }, + { + up: migration_20260225_003500_add_pages_collection.up, + down: migration_20260225_003500_add_pages_collection.down, + name: '20260225_003500_add_pages_collection', + }, ];