import { type MigrateDownArgs, type MigrateUpArgs, sql } from '@payloadcms/db-sqlite' const literal = (value: string) => `'${value.replace(/'/g, "''")}'` const previousDescription = 'Partner in drei Kategorien: Hauptsponsoren, Medienpartner und weitere Sponsoren. Klicken für Details.' const interimDescription = 'Ein starkes Netzwerk aus Unternehmen und Medien begleitet den Bayerischen Mittelstandspreis. Klicken für Details.' const sponsorDescription = 'Ein starkes Netzwerk aus Unternehmen und Medien begleitet den Bayerischen Mittelstandspreis. Die gestaffelten Bänder machen die Gewichtung auf jeder Bildschirmgröße klar.' const tierCopy = [ { tier: 1, previousLabel: 'Hauptsponsoren', label: 'Große Darstellung' }, { tier: 2, previousLabel: 'Medienpartner', label: 'Mittlere Darstellung' }, { tier: 3, previousLabel: 'Weitere Sponsoren', label: 'Kompakte Darstellung' }, ] as const async function updateTierLabels( db: MigrateUpArgs['db'], tableName: 'network_tiers' | '_network_tiers_v', direction: 'up' | 'down', ) { for (const copy of tierCopy) { const from = direction === 'up' ? copy.previousLabel : copy.label const to = direction === 'up' ? copy.label : copy.previousLabel await db.run( sql.raw( `UPDATE ${tableName} SET label = ${literal(to)} WHERE tier = ${copy.tier} AND label = ${literal(from)};`, ), ) } } export async function up({ db, payload: _payload, req: _req }: MigrateUpArgs): Promise { await db.run( sql.raw( `UPDATE pages SET netzwerk_partners_description = ${literal(sponsorDescription)} WHERE netzwerk_partners_description IN (${literal(previousDescription)}, ${literal(interimDescription)});`, ), ) await db.run( sql.raw( `UPDATE _pages_v SET version_netzwerk_partners_description = ${literal(sponsorDescription)} WHERE version_netzwerk_partners_description IN (${literal(previousDescription)}, ${literal(interimDescription)});`, ), ) await updateTierLabels(db, 'network_tiers', 'up') await updateTierLabels(db, '_network_tiers_v', 'up') await db.run(sql.raw(`UPDATE network_tiers SET note = '' WHERE tier = 1 AND label = 'Große Darstellung' AND note = 'Premium';`)) await db.run(sql.raw(`UPDATE _network_tiers_v SET note = '' WHERE tier = 1 AND label = 'Große Darstellung' AND note = 'Premium';`)) } export async function down({ db, payload: _payload, req: _req }: MigrateDownArgs): Promise { await db.run( sql.raw( `UPDATE pages SET netzwerk_partners_description = ${literal(previousDescription)} WHERE netzwerk_partners_description = ${literal(sponsorDescription)};`, ), ) await db.run( sql.raw( `UPDATE _pages_v SET version_netzwerk_partners_description = ${literal(previousDescription)} WHERE version_netzwerk_partners_description = ${literal(sponsorDescription)};`, ), ) await updateTierLabels(db, 'network_tiers', 'down') await updateTierLabels(db, '_network_tiers_v', 'down') await db.run(sql.raw(`UPDATE network_tiers SET note = 'Premium' WHERE tier = 1 AND label = 'Hauptsponsoren' AND note = '';`)) await db.run(sql.raw(`UPDATE _network_tiers_v SET note = 'Premium' WHERE tier = 1 AND label = 'Hauptsponsoren' AND note = '';`)) }