mirror of
https://github.com/complexcaresolutions/cms.c2sgmbh.git
synced 2026-03-18 01:34:11 +00:00
- Add migration for BlogWoman page blocks (favorites-block, series-block, series-detail-block, featured-content-block) with all required columns - Add seed scripts for BlogWoman tenant creation with full content: - 10 pages (Startseite, Über mich, Newsletter, etc.) - 7 blog posts - 9 series (GRFI, Investment-Piece, Pleasure P&L, etc.) - 4 categories, 10 tags, 1 author - Navigation, social links, cookie configuration - Add Konzept-KI guide for AI-assisted tenant creation - Add BlogWoman tenant prompt template Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
511 lines
22 KiB
TypeScript
511 lines
22 KiB
TypeScript
import { MigrateUpArgs, MigrateDownArgs, sql } from '@payloadcms/db-postgres'
|
|
|
|
/**
|
|
* Migration: Add BlogWoman Block Tables
|
|
*
|
|
* Creates the missing pages_blocks_* tables for BlogWoman blocks:
|
|
* - favorites-block
|
|
* - series-block
|
|
* - series-detail-block
|
|
* - featured-content-block
|
|
*/
|
|
export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
|
|
await db.execute(sql`
|
|
-- =====================================================
|
|
-- ENUM TYPES for BlogWoman Blocks
|
|
-- =====================================================
|
|
|
|
-- FavoritesBlock ENUMs
|
|
DO $$ BEGIN
|
|
CREATE TYPE "public"."enum_pages_blocks_favorites_block_category" AS ENUM('all', 'fashion', 'beauty', 'travel', 'tech', 'home');
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
CREATE TYPE "public"."enum_pages_blocks_favorites_block_layout" AS ENUM('grid', 'list', 'carousel');
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
CREATE TYPE "public"."enum_pages_blocks_favorites_block_columns" AS ENUM('2', '3', '4');
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
CREATE TYPE "public"."enum_pages_blocks_favorites_block_background_color" AS ENUM('white', 'ivory', 'sand', 'light', 'dark');
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
-- SeriesBlock ENUMs
|
|
DO $$ BEGIN
|
|
CREATE TYPE "public"."enum_pages_blocks_series_block_layout" AS ENUM('grid', 'list', 'featured');
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
CREATE TYPE "public"."enum_pages_blocks_series_block_columns" AS ENUM('2', '3', '4');
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
CREATE TYPE "public"."enum_pages_blocks_series_block_background_color" AS ENUM('white', 'ivory', 'sand', 'light', 'dark');
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
-- SeriesDetailBlock ENUMs
|
|
DO $$ BEGIN
|
|
CREATE TYPE "public"."enum_pages_blocks_series_detail_block_layout" AS ENUM('full', 'compact');
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
CREATE TYPE "public"."enum_pages_blocks_series_detail_block_hero_height" AS ENUM('small', 'medium', 'large', 'fullscreen');
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
CREATE TYPE "public"."enum_pages_blocks_series_detail_block_hero_text_align" AS ENUM('left', 'center', 'right');
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
-- FeaturedContentBlock ENUMs
|
|
DO $$ BEGIN
|
|
CREATE TYPE "public"."enum_pages_blocks_featured_content_block_layout" AS ENUM('grid', 'carousel', 'list', 'featured-grid');
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
CREATE TYPE "public"."enum_pages_blocks_featured_content_block_columns" AS ENUM('2', '3', '4');
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
CREATE TYPE "public"."enum_pages_blocks_featured_content_block_background_color" AS ENUM('white', 'ivory', 'sand', 'light', 'dark');
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
CREATE TYPE "public"."enum_pages_blocks_featured_content_block_card_bg" AS ENUM('white', 'transparent', 'light');
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
CREATE TYPE "public"."enum_pages_blocks_featured_content_block_card_img_ratio" AS ENUM('16:9', '4:3', '1:1', '3:2');
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
CREATE TYPE "public"."enum_pages_blocks_featured_content_block_card_hover" AS ENUM('none', 'lift', 'zoom', 'shadow');
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
CREATE TYPE "public"."enum_pages_blocks_featured_content_block_items_item_type" AS ENUM('post', 'video', 'series', 'external');
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
-- =====================================================
|
|
-- FAVORITES BLOCK TABLES
|
|
-- =====================================================
|
|
|
|
CREATE TABLE IF NOT EXISTS "pages_blocks_favorites_block" (
|
|
"_order" integer NOT NULL,
|
|
"_parent_id" integer NOT NULL,
|
|
"_path" text NOT NULL,
|
|
"id" varchar PRIMARY KEY NOT NULL,
|
|
"category" "enum_pages_blocks_favorites_block_category" DEFAULT 'all',
|
|
"show_featured_only" boolean DEFAULT false,
|
|
"limit" numeric DEFAULT 8,
|
|
"layout" "enum_pages_blocks_favorites_block_layout" DEFAULT 'grid',
|
|
"columns" "enum_pages_blocks_favorites_block_columns" DEFAULT '4',
|
|
"show_price" boolean DEFAULT true,
|
|
"show_badge" boolean DEFAULT true,
|
|
"show_description" boolean DEFAULT false,
|
|
"show_category" boolean DEFAULT false,
|
|
"background_color" "enum_pages_blocks_favorites_block_background_color" DEFAULT 'white',
|
|
"cta_show_cta" boolean DEFAULT false,
|
|
"cta_cta_url" varchar,
|
|
"block_name" varchar
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "pages_blocks_favorites_block_locales" (
|
|
"title" varchar,
|
|
"subtitle" varchar,
|
|
"cta_cta_text" varchar DEFAULT 'Alle Favoriten ansehen',
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"_locale" "_locales" NOT NULL,
|
|
"_parent_id" varchar NOT NULL,
|
|
CONSTRAINT "pages_blocks_favorites_block_locales_locale_parent_id_unique" UNIQUE("_locale","_parent_id")
|
|
);
|
|
|
|
-- =====================================================
|
|
-- SERIES BLOCK TABLES
|
|
-- =====================================================
|
|
|
|
CREATE TABLE IF NOT EXISTS "pages_blocks_series_block" (
|
|
"_order" integer NOT NULL,
|
|
"_parent_id" integer NOT NULL,
|
|
"_path" text NOT NULL,
|
|
"id" varchar PRIMARY KEY NOT NULL,
|
|
"layout" "enum_pages_blocks_series_block_layout" DEFAULT 'grid',
|
|
"columns" "enum_pages_blocks_series_block_columns" DEFAULT '3',
|
|
"show_description" boolean DEFAULT true,
|
|
"show_logo" boolean DEFAULT true,
|
|
"show_tagline" boolean DEFAULT true,
|
|
"use_brand_colors" boolean DEFAULT true,
|
|
"limit" numeric DEFAULT 6,
|
|
"background_color" "enum_pages_blocks_series_block_background_color" DEFAULT 'white',
|
|
"cta_show_cta" boolean DEFAULT false,
|
|
"cta_cta_url" varchar,
|
|
"block_name" varchar
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "pages_blocks_series_block_locales" (
|
|
"title" varchar,
|
|
"subtitle" varchar,
|
|
"cta_cta_text" varchar DEFAULT 'Alle Serien ansehen',
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"_locale" "_locales" NOT NULL,
|
|
"_parent_id" varchar NOT NULL,
|
|
CONSTRAINT "pages_blocks_series_block_locales_locale_parent_id_unique" UNIQUE("_locale","_parent_id")
|
|
);
|
|
|
|
-- =====================================================
|
|
-- SERIES DETAIL BLOCK TABLES
|
|
-- =====================================================
|
|
|
|
CREATE TABLE IF NOT EXISTS "pages_blocks_series_detail_block" (
|
|
"_order" integer NOT NULL,
|
|
"_parent_id" integer NOT NULL,
|
|
"_path" text NOT NULL,
|
|
"id" varchar PRIMARY KEY NOT NULL,
|
|
"series_id" integer,
|
|
"show_hero" boolean DEFAULT true,
|
|
"show_description" boolean DEFAULT true,
|
|
"show_brand_colors" boolean DEFAULT true,
|
|
"show_related_posts" boolean DEFAULT true,
|
|
"related_posts_limit" numeric DEFAULT 6,
|
|
"show_youtube_playlist" boolean DEFAULT true,
|
|
"layout" "enum_pages_blocks_series_detail_block_layout" DEFAULT 'full',
|
|
"hero_height" "enum_pages_blocks_series_detail_block_hero_height" DEFAULT 'medium',
|
|
"hero_overlay" boolean DEFAULT true,
|
|
"hero_text_align" "enum_pages_blocks_series_detail_block_hero_text_align" DEFAULT 'center',
|
|
"block_name" varchar
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "pages_blocks_series_detail_block_locales" (
|
|
"related_posts_title" varchar DEFAULT 'Beiträge aus dieser Serie',
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"_locale" "_locales" NOT NULL,
|
|
"_parent_id" varchar NOT NULL,
|
|
CONSTRAINT "pages_blocks_series_detail_block_locales_locale_parent_id_unique" UNIQUE("_locale","_parent_id")
|
|
);
|
|
|
|
-- Relationship table for series field
|
|
CREATE TABLE IF NOT EXISTS "pages_blocks_series_detail_block_rels" (
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"order" integer,
|
|
"parent_id" varchar NOT NULL,
|
|
"path" varchar NOT NULL,
|
|
"series_id" integer
|
|
);
|
|
|
|
-- =====================================================
|
|
-- FEATURED CONTENT BLOCK TABLES
|
|
-- =====================================================
|
|
|
|
CREATE TABLE IF NOT EXISTS "pages_blocks_featured_content_block" (
|
|
"_order" integer NOT NULL,
|
|
"_parent_id" integer NOT NULL,
|
|
"_path" text NOT NULL,
|
|
"id" varchar PRIMARY KEY NOT NULL,
|
|
"layout" "enum_pages_blocks_featured_content_block_layout" DEFAULT 'grid',
|
|
"columns" "enum_pages_blocks_featured_content_block_columns" DEFAULT '3',
|
|
"show_dates" boolean DEFAULT true,
|
|
"show_type" boolean DEFAULT true,
|
|
"show_description" boolean DEFAULT true,
|
|
"show_custom_labels" boolean DEFAULT true,
|
|
"background_color" "enum_pages_blocks_featured_content_block_background_color" DEFAULT 'white',
|
|
"card_bg" "enum_pages_blocks_featured_content_block_card_bg" DEFAULT 'white',
|
|
"card_shadow" boolean DEFAULT true,
|
|
"card_border" boolean DEFAULT false,
|
|
"card_img_ratio" "enum_pages_blocks_featured_content_block_card_img_ratio" DEFAULT '16:9',
|
|
"card_hover" "enum_pages_blocks_featured_content_block_card_hover" DEFAULT 'lift',
|
|
"cta_show_cta" boolean DEFAULT false,
|
|
"cta_cta_url" varchar,
|
|
"block_name" varchar
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "pages_blocks_featured_content_block_locales" (
|
|
"title" varchar,
|
|
"subtitle" varchar,
|
|
"cta_cta_text" varchar DEFAULT 'Alle ansehen',
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"_locale" "_locales" NOT NULL,
|
|
"_parent_id" varchar NOT NULL,
|
|
CONSTRAINT "pages_blocks_featured_content_block_locales_locale_parent_id_unique" UNIQUE("_locale","_parent_id")
|
|
);
|
|
|
|
-- Items array table for featured content
|
|
CREATE TABLE IF NOT EXISTS "pages_blocks_featured_content_block_items" (
|
|
"_order" integer NOT NULL,
|
|
"_parent_id" varchar NOT NULL,
|
|
"id" varchar PRIMARY KEY NOT NULL,
|
|
"item_type" "enum_pages_blocks_featured_content_block_items_item_type",
|
|
"post_id" integer,
|
|
"video_id" integer,
|
|
"series_id" integer,
|
|
"external_url" varchar,
|
|
"external_image_id" integer,
|
|
"featured" boolean DEFAULT false
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "pages_blocks_featured_content_block_items_locales" (
|
|
"external_title" varchar,
|
|
"external_description" varchar,
|
|
"custom_label" varchar,
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"_locale" "_locales" NOT NULL,
|
|
"_parent_id" varchar NOT NULL,
|
|
CONSTRAINT "pages_blocks_featured_content_block_items_locales_locale_parent_id_unique" UNIQUE("_locale","_parent_id")
|
|
);
|
|
|
|
-- Relationship table for items (post, video, series references)
|
|
CREATE TABLE IF NOT EXISTS "pages_blocks_featured_content_block_items_rels" (
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"order" integer,
|
|
"parent_id" varchar NOT NULL,
|
|
"path" varchar NOT NULL,
|
|
"posts_id" integer,
|
|
"videos_id" integer,
|
|
"series_id" integer
|
|
);
|
|
|
|
-- =====================================================
|
|
-- INDEXES
|
|
-- =====================================================
|
|
|
|
-- Favorites Block indexes
|
|
CREATE INDEX IF NOT EXISTS "pages_blocks_favorites_block_order_idx" ON "pages_blocks_favorites_block" ("_order");
|
|
CREATE INDEX IF NOT EXISTS "pages_blocks_favorites_block_parent_id_idx" ON "pages_blocks_favorites_block" ("_parent_id");
|
|
CREATE INDEX IF NOT EXISTS "pages_blocks_favorites_block_path_idx" ON "pages_blocks_favorites_block" ("_path");
|
|
|
|
-- Series Block indexes
|
|
CREATE INDEX IF NOT EXISTS "pages_blocks_series_block_order_idx" ON "pages_blocks_series_block" ("_order");
|
|
CREATE INDEX IF NOT EXISTS "pages_blocks_series_block_parent_id_idx" ON "pages_blocks_series_block" ("_parent_id");
|
|
CREATE INDEX IF NOT EXISTS "pages_blocks_series_block_path_idx" ON "pages_blocks_series_block" ("_path");
|
|
|
|
-- Series Detail Block indexes
|
|
CREATE INDEX IF NOT EXISTS "pages_blocks_series_detail_block_order_idx" ON "pages_blocks_series_detail_block" ("_order");
|
|
CREATE INDEX IF NOT EXISTS "pages_blocks_series_detail_block_parent_id_idx" ON "pages_blocks_series_detail_block" ("_parent_id");
|
|
CREATE INDEX IF NOT EXISTS "pages_blocks_series_detail_block_path_idx" ON "pages_blocks_series_detail_block" ("_path");
|
|
CREATE INDEX IF NOT EXISTS "pages_blocks_series_detail_block_series_idx" ON "pages_blocks_series_detail_block" ("series_id");
|
|
CREATE INDEX IF NOT EXISTS "pages_blocks_series_detail_block_rels_order_idx" ON "pages_blocks_series_detail_block_rels" ("order");
|
|
CREATE INDEX IF NOT EXISTS "pages_blocks_series_detail_block_rels_parent_fk" ON "pages_blocks_series_detail_block_rels" ("parent_id");
|
|
CREATE INDEX IF NOT EXISTS "pages_blocks_series_detail_block_rels_path_idx" ON "pages_blocks_series_detail_block_rels" ("path");
|
|
CREATE INDEX IF NOT EXISTS "pages_blocks_series_detail_block_rels_series_idx" ON "pages_blocks_series_detail_block_rels" ("series_id");
|
|
|
|
-- Featured Content Block indexes
|
|
CREATE INDEX IF NOT EXISTS "pages_blocks_featured_content_block_order_idx" ON "pages_blocks_featured_content_block" ("_order");
|
|
CREATE INDEX IF NOT EXISTS "pages_blocks_featured_content_block_parent_id_idx" ON "pages_blocks_featured_content_block" ("_parent_id");
|
|
CREATE INDEX IF NOT EXISTS "pages_blocks_featured_content_block_path_idx" ON "pages_blocks_featured_content_block" ("_path");
|
|
|
|
CREATE INDEX IF NOT EXISTS "pages_blocks_featured_content_block_items_order_idx" ON "pages_blocks_featured_content_block_items" ("_order");
|
|
CREATE INDEX IF NOT EXISTS "pages_blocks_featured_content_block_items_parent_fk" ON "pages_blocks_featured_content_block_items" ("_parent_id");
|
|
CREATE INDEX IF NOT EXISTS "pages_blocks_featured_content_block_items_post_idx" ON "pages_blocks_featured_content_block_items" ("post_id");
|
|
CREATE INDEX IF NOT EXISTS "pages_blocks_featured_content_block_items_video_idx" ON "pages_blocks_featured_content_block_items" ("video_id");
|
|
CREATE INDEX IF NOT EXISTS "pages_blocks_featured_content_block_items_series_idx" ON "pages_blocks_featured_content_block_items" ("series_id");
|
|
|
|
CREATE INDEX IF NOT EXISTS "pages_blocks_featured_content_block_items_rels_order_idx" ON "pages_blocks_featured_content_block_items_rels" ("order");
|
|
CREATE INDEX IF NOT EXISTS "pages_blocks_featured_content_block_items_rels_parent_fk" ON "pages_blocks_featured_content_block_items_rels" ("parent_id");
|
|
CREATE INDEX IF NOT EXISTS "pages_blocks_featured_content_block_items_rels_path_idx" ON "pages_blocks_featured_content_block_items_rels" ("path");
|
|
|
|
-- =====================================================
|
|
-- FOREIGN KEY CONSTRAINTS
|
|
-- =====================================================
|
|
|
|
DO $$ BEGIN
|
|
ALTER TABLE "pages_blocks_favorites_block" ADD CONSTRAINT "pages_blocks_favorites_block_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."pages"("id") ON DELETE cascade ON UPDATE no action;
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
ALTER TABLE "pages_blocks_favorites_block_locales" ADD CONSTRAINT "pages_blocks_favorites_block_locales_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."pages_blocks_favorites_block"("id") ON DELETE cascade ON UPDATE no action;
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
ALTER TABLE "pages_blocks_series_block" ADD CONSTRAINT "pages_blocks_series_block_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."pages"("id") ON DELETE cascade ON UPDATE no action;
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
ALTER TABLE "pages_blocks_series_block_locales" ADD CONSTRAINT "pages_blocks_series_block_locales_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."pages_blocks_series_block"("id") ON DELETE cascade ON UPDATE no action;
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
ALTER TABLE "pages_blocks_series_detail_block" ADD CONSTRAINT "pages_blocks_series_detail_block_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."pages"("id") ON DELETE cascade ON UPDATE no action;
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
ALTER TABLE "pages_blocks_series_detail_block_locales" ADD CONSTRAINT "pages_blocks_series_detail_block_locales_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."pages_blocks_series_detail_block"("id") ON DELETE cascade ON UPDATE no action;
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
ALTER TABLE "pages_blocks_series_detail_block_rels" ADD CONSTRAINT "pages_blocks_series_detail_block_rels_parent_fk" FOREIGN KEY ("parent_id") REFERENCES "public"."pages_blocks_series_detail_block"("id") ON DELETE cascade ON UPDATE no action;
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
ALTER TABLE "pages_blocks_series_detail_block_rels" ADD CONSTRAINT "pages_blocks_series_detail_block_rels_series_fk" FOREIGN KEY ("series_id") REFERENCES "public"."series"("id") ON DELETE cascade ON UPDATE no action;
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
ALTER TABLE "pages_blocks_series_detail_block" ADD CONSTRAINT "pages_blocks_series_detail_block_series_fk" FOREIGN KEY ("series_id") REFERENCES "public"."series"("id") ON DELETE set null ON UPDATE no action;
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
ALTER TABLE "pages_blocks_featured_content_block" ADD CONSTRAINT "pages_blocks_featured_content_block_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."pages"("id") ON DELETE cascade ON UPDATE no action;
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
ALTER TABLE "pages_blocks_featured_content_block_locales" ADD CONSTRAINT "pages_blocks_featured_content_block_locales_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."pages_blocks_featured_content_block"("id") ON DELETE cascade ON UPDATE no action;
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
ALTER TABLE "pages_blocks_featured_content_block_items" ADD CONSTRAINT "pages_blocks_featured_content_block_items_parent_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."pages_blocks_featured_content_block"("id") ON DELETE cascade ON UPDATE no action;
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
ALTER TABLE "pages_blocks_featured_content_block_items" ADD CONSTRAINT "pages_blocks_featured_content_block_items_external_image_fk" FOREIGN KEY ("external_image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
ALTER TABLE "pages_blocks_featured_content_block_items" ADD CONSTRAINT "pages_blocks_featured_content_block_items_post_fk" FOREIGN KEY ("post_id") REFERENCES "public"."posts"("id") ON DELETE set null ON UPDATE no action;
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
ALTER TABLE "pages_blocks_featured_content_block_items" ADD CONSTRAINT "pages_blocks_featured_content_block_items_video_fk" FOREIGN KEY ("video_id") REFERENCES "public"."videos"("id") ON DELETE set null ON UPDATE no action;
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
ALTER TABLE "pages_blocks_featured_content_block_items" ADD CONSTRAINT "pages_blocks_featured_content_block_items_series_fk" FOREIGN KEY ("series_id") REFERENCES "public"."series"("id") ON DELETE set null ON UPDATE no action;
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
ALTER TABLE "pages_blocks_featured_content_block_items_locales" ADD CONSTRAINT "pages_blocks_featured_content_block_items_locales_parent_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."pages_blocks_featured_content_block_items"("id") ON DELETE cascade ON UPDATE no action;
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
ALTER TABLE "pages_blocks_featured_content_block_items_rels" ADD CONSTRAINT "pages_blocks_featured_content_block_items_rels_parent_fk" FOREIGN KEY ("parent_id") REFERENCES "public"."pages_blocks_featured_content_block_items"("id") ON DELETE cascade ON UPDATE no action;
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
ALTER TABLE "pages_blocks_featured_content_block_items_rels" ADD CONSTRAINT "pages_blocks_featured_content_block_items_rels_posts_fk" FOREIGN KEY ("posts_id") REFERENCES "public"."posts"("id") ON DELETE cascade ON UPDATE no action;
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
ALTER TABLE "pages_blocks_featured_content_block_items_rels" ADD CONSTRAINT "pages_blocks_featured_content_block_items_rels_videos_fk" FOREIGN KEY ("videos_id") REFERENCES "public"."videos"("id") ON DELETE cascade ON UPDATE no action;
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
DO $$ BEGIN
|
|
ALTER TABLE "pages_blocks_featured_content_block_items_rels" ADD CONSTRAINT "pages_blocks_featured_content_block_items_rels_series_fk" FOREIGN KEY ("series_id") REFERENCES "public"."series"("id") ON DELETE cascade ON UPDATE no action;
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
`);
|
|
}
|
|
|
|
export async function down({ db, payload, req }: MigrateDownArgs): Promise<void> {
|
|
await db.execute(sql`
|
|
-- Drop tables in reverse order (child tables first)
|
|
DROP TABLE IF EXISTS "pages_blocks_featured_content_block_items_rels";
|
|
DROP TABLE IF EXISTS "pages_blocks_featured_content_block_items_locales";
|
|
DROP TABLE IF EXISTS "pages_blocks_featured_content_block_items";
|
|
DROP TABLE IF EXISTS "pages_blocks_featured_content_block_locales";
|
|
DROP TABLE IF EXISTS "pages_blocks_featured_content_block";
|
|
|
|
DROP TABLE IF EXISTS "pages_blocks_series_detail_block_rels";
|
|
DROP TABLE IF EXISTS "pages_blocks_series_detail_block_locales";
|
|
DROP TABLE IF EXISTS "pages_blocks_series_detail_block";
|
|
|
|
DROP TABLE IF EXISTS "pages_blocks_series_block_locales";
|
|
DROP TABLE IF EXISTS "pages_blocks_series_block";
|
|
|
|
DROP TABLE IF EXISTS "pages_blocks_favorites_block_locales";
|
|
DROP TABLE IF EXISTS "pages_blocks_favorites_block";
|
|
|
|
-- Drop ENUMs
|
|
DROP TYPE IF EXISTS "enum_pages_blocks_featured_content_block_items_item_type";
|
|
DROP TYPE IF EXISTS "enum_pages_blocks_featured_content_block_card_hover";
|
|
DROP TYPE IF EXISTS "enum_pages_blocks_featured_content_block_card_img_ratio";
|
|
DROP TYPE IF EXISTS "enum_pages_blocks_featured_content_block_card_bg";
|
|
DROP TYPE IF EXISTS "enum_pages_blocks_featured_content_block_background_color";
|
|
DROP TYPE IF EXISTS "enum_pages_blocks_featured_content_block_columns";
|
|
DROP TYPE IF EXISTS "enum_pages_blocks_featured_content_block_layout";
|
|
DROP TYPE IF EXISTS "enum_pages_blocks_series_detail_block_hero_text_align";
|
|
DROP TYPE IF EXISTS "enum_pages_blocks_series_detail_block_hero_height";
|
|
DROP TYPE IF EXISTS "enum_pages_blocks_series_detail_block_layout";
|
|
DROP TYPE IF EXISTS "enum_pages_blocks_series_block_background_color";
|
|
DROP TYPE IF EXISTS "enum_pages_blocks_series_block_columns";
|
|
DROP TYPE IF EXISTS "enum_pages_blocks_series_block_layout";
|
|
DROP TYPE IF EXISTS "enum_pages_blocks_favorites_block_background_color";
|
|
DROP TYPE IF EXISTS "enum_pages_blocks_favorites_block_columns";
|
|
DROP TYPE IF EXISTS "enum_pages_blocks_favorites_block_layout";
|
|
DROP TYPE IF EXISTS "enum_pages_blocks_favorites_block_category";
|
|
`);
|
|
}
|