fix(blocks): add database migration for CardGridBlock icon fields

Adds missing columns (media_type, icon, icon_position) to
pages_blocks_card_grid_block_cards table. Without this migration,
pages API returns 500 on production.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Martin Porwoll 2026-02-16 14:30:04 +00:00
parent 85c76a1eb4
commit 9bb041bd7c
2 changed files with 52 additions and 0 deletions

View file

@ -0,0 +1,46 @@
import { MigrateUpArgs, MigrateDownArgs, sql } from '@payloadcms/db-postgres'
export async function up({ db }: MigrateUpArgs): Promise<void> {
// Add enum for mediaType
await db.execute(sql`
DO $$ BEGIN
CREATE TYPE "enum_pages_blocks_card_grid_block_cards_media_type" AS ENUM('none', 'image', 'icon');
EXCEPTION
WHEN duplicate_object THEN null;
END $$;
`)
// Add enum for iconPosition
await db.execute(sql`
DO $$ BEGIN
CREATE TYPE "enum_pages_blocks_card_grid_block_cards_icon_position" AS ENUM('top', 'left');
EXCEPTION
WHEN duplicate_object THEN null;
END $$;
`)
// Add columns to card-grid-block cards array table
await db.execute(sql`
ALTER TABLE "pages_blocks_card_grid_block_cards"
ADD COLUMN IF NOT EXISTS "media_type" "enum_pages_blocks_card_grid_block_cards_media_type" DEFAULT 'none',
ADD COLUMN IF NOT EXISTS "icon" varchar,
ADD COLUMN IF NOT EXISTS "icon_position" "enum_pages_blocks_card_grid_block_cards_icon_position" DEFAULT 'top';
`)
}
export async function down({ db }: MigrateDownArgs): Promise<void> {
await db.execute(sql`
ALTER TABLE "pages_blocks_card_grid_block_cards"
DROP COLUMN IF EXISTS "media_type",
DROP COLUMN IF EXISTS "icon",
DROP COLUMN IF EXISTS "icon_position";
`)
await db.execute(sql`
DROP TYPE IF EXISTS "enum_pages_blocks_card_grid_block_cards_media_type";
`)
await db.execute(sql`
DROP TYPE IF EXISTS "enum_pages_blocks_card_grid_block_cards_icon_position";
`)
}

View file

@ -36,6 +36,7 @@ import * as migration_20260114_200000_fix_community_role_enum from './20260114_2
import * as migration_20260116_100000_add_token_notification_fields from './20260116_100000_add_token_notification_fields';
import * as migration_20260116_120000_add_report_schedules from './20260116_120000_add_report_schedules';
import * as migration_20260215_120000_add_monitoring_collections from './20260215_120000_add_monitoring_collections';
import * as migration_20260216_150000_add_card_grid_icon_fields from './20260216_150000_add_card_grid_icon_fields';
export const migrations = [
{
@ -228,4 +229,9 @@ export const migrations = [
down: migration_20260215_120000_add_monitoring_collections.down,
name: '20260215_120000_add_monitoring_collections'
},
{
up: migration_20260216_150000_add_card_grid_icon_fields.up,
down: migration_20260216_150000_add_card_grid_icon_fields.down,
name: '20260216_150000_add_card_grid_icon_fields'
},
];