import { MigrateUpArgs, MigrateDownArgs, sql } from '@payloadcms/db-postgres'

/**
 * Safely adds missing CTA Tracking ID (ctaId / cta_id) columns to the live and version tables.
 * This migration is completely non-destructive and preserves all existing database records.
 */
export async function up({ db }: MigrateUpArgs): Promise<void> {
  await db.execute(sql`
    -- 1. HeroOfferV1 block CTAs
    ALTER TABLE "pages_blocks_hero_offer_v1_ctas" 
      ADD COLUMN IF NOT EXISTS "cta_id" varchar;
    ALTER TABLE "_pages_v_blocks_hero_offer_v1_ctas" 
      ADD COLUMN IF NOT EXISTS "cta_id" varchar;

    -- 2. CTABannerV1 block CTAs
    ALTER TABLE "pages_blocks_cta_banner_v1_ctas" 
      ADD COLUMN IF NOT EXISTS "cta_id" varchar;
    ALTER TABLE "_pages_v_blocks_cta_banner_v1_ctas" 
      ADD COLUMN IF NOT EXISTS "cta_id" varchar;

    -- 3. ContentListV1 block CTAs (Array Field)
    ALTER TABLE "pages_blocks_content_list_v1_ctas" 
      ADD COLUMN IF NOT EXISTS "cta_id" varchar;
    ALTER TABLE "_pages_v_blocks_content_list_v1_ctas" 
      ADD COLUMN IF NOT EXISTS "cta_id" varchar;

    -- 4. ContentListV1 block Items CTA Group
    ALTER TABLE "pages_blocks_content_list_v1_items" 
      ADD COLUMN IF NOT EXISTS "cta_cta_id" varchar;
    ALTER TABLE "_pages_v_blocks_content_list_v1_items" 
      ADD COLUMN IF NOT EXISTS "cta_cta_id" varchar;

    -- 5. Shared CTAs Collection
    ALTER TABLE "shared_ctas" 
      ADD COLUMN IF NOT EXISTS "cta_id" varchar;

    -- 6. Header Global configuration landing CTA
    ALTER TABLE "header" 
      ADD COLUMN IF NOT EXISTS "landing_c_t_a_cta_id" varchar;
  `)
}

export async function down({ db }: MigrateDownArgs): Promise<void> {
  await db.execute(sql`
    ALTER TABLE "pages_blocks_hero_offer_v1_ctas" DROP COLUMN IF EXISTS "cta_id";
    ALTER TABLE "_pages_v_blocks_hero_offer_v1_ctas" DROP COLUMN IF EXISTS "cta_id";

    ALTER TABLE "pages_blocks_cta_banner_v1_ctas" DROP COLUMN IF EXISTS "cta_id";
    ALTER TABLE "_pages_v_blocks_cta_banner_v1_ctas" DROP COLUMN IF EXISTS "cta_id";

    ALTER TABLE "pages_blocks_content_list_v1_ctas" DROP COLUMN IF EXISTS "cta_id";
    ALTER TABLE "_pages_v_blocks_content_list_v1_ctas" DROP COLUMN IF EXISTS "cta_id";

    ALTER TABLE "pages_blocks_content_list_v1_items" DROP COLUMN IF EXISTS "cta_cta_id";
    ALTER TABLE "_pages_v_blocks_content_list_v1_items" DROP COLUMN IF EXISTS "cta_cta_id";

    ALTER TABLE "shared_ctas" DROP COLUMN IF EXISTS "cta_id";

    ALTER TABLE "header" DROP COLUMN IF EXISTS "landing_c_t_a_cta_id";
  `)
}
