import 'dotenv/config' import config from '@payload-config' import { getPayload, type Payload } from 'payload' import { mediaByFilename } from './mediaByFilename' import { participationContent } from '@/spa/participationContent' async function main() { const payload = await getPayload({ config }) const pageResult = await payload.find({ collection: 'pages', limit: 1, pagination: false, draft: true, overrideAccess: true, where: { or: [{ spaPath: { equals: '/teilnahme' } }, { slug: { equals: 'teilnahme' } }, { slug: { equals: 'participation' } }], } as never, }) const page = pageResult.docs[0] if (!page) throw new Error('Participation page not found. Expected spaPath=/teilnahme or slug=teilnahme/participation.') const [heroImage, evaluationImage, formImage] = await Promise.all([ mediaByFilename(payload, participationContent.hero.backgroundImageFilename), mediaByFilename(payload, participationContent.evaluation.imageFilename), mediaByFilename(payload, participationContent.applicationForm.imageFilename), ]) const { backgroundImageFilename: _heroFilename, ...heroContent } = participationContent.hero const { imageFilename: _evaluationFilename, ...evaluationContent } = participationContent.evaluation const { imageFilename: _formFilename, ...applicationFormContent } = participationContent.applicationForm await payload.update({ collection: 'pages', id: page.id, overrideAccess: true, context: { disableRevalidate: true }, data: { participation: { hero: { ...heroContent, backgroundImage: heroImage, }, process: participationContent.process, eligibility: participationContent.eligibility, evaluation: { ...evaluationContent, image: evaluationImage, }, applicationWays: participationContent.applicationWays, datesBanner: participationContent.datesBanner, applicationForm: { ...applicationFormContent, image: formImage, }, form: participationContent.form, }, } as never, }) payload.logger.info(`Preloaded participation CMS fields for page ${page.id}`) process.exit(0) } main().catch((error) => { console.error(error) process.exit(1) })