feat(network): add responsive sponsor hierarchy

This commit is contained in:
syntaxbullet
2026-07-31 16:41:02 +02:00
parent ebecf66e6f
commit 30efb4b36e
11 changed files with 438 additions and 37 deletions

View File

@@ -0,0 +1,66 @@
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<void> {
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<void> {
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 = '';`))
}