import { getPayload } from 'payload' import configPromise from '../src/payload.config' import fs from 'fs' import path from 'path' // Helper to remove ids function removeIds(obj: any): any { if (Array.isArray(obj)) return obj.map(removeIds) if (obj !== null && typeof obj === 'object') { const newObj: any = {} for (const key of Object.keys(obj)) { if (key !== 'id') { newObj[key] = removeIds(obj[key]) } } return newObj } return obj } async function run() { const payload = await getPayload({ config: configPromise }) // We already uploaded media 8 and 9 in previous script. Let's find any media. const allMedia = await payload.find({ collection: 'media', limit: 10 }) const defaultImageId = allMedia.docs[0]?.id || 8 // Load snapshot const snapshotPath = path.join(process.cwd(), 'scripts', 'content-snapshot.json') const snapshot = JSON.parse(fs.readFileSync(snapshotPath, 'utf-8')) const enTitles: Record = { 'home': 'Home', 'uslugi': 'Services', 'jak-sie-umowic': 'How to make an appointment', 'o-nas': 'About Us', 'faq': 'FAQ', 'kontakt': 'Contact', 'stowarzyszenie': 'Association', 'polityka-prywatnosci': 'Privacy Policy', 'polityka-cookies': 'Cookie Policy', 'impressum': 'Imprint' } for (const pageSnapshot of snapshot.pages) { const slug = pageSnapshot.pl.slug if (slug === 'home') continue // Already fixed const dbPage = await payload.find({ collection: 'pages', where: { slug: { equals: slug } }, locale: 'pl' }) if (!dbPage.docs[0]) continue const pageId = dbPage.docs[0].id const updateLayout = async (loc: 'pl' | 'de' | 'en', baseLoc: 'pl' | 'de') => { let layout = removeIds(pageSnapshot[baseLoc]?.layout || pageSnapshot.pl.layout) // Inject images layout = layout.map((block: any) => { if (block.blockType === 'hero' || block.blockType === 'pageHeader' || block.blockType === 'about' || block.blockType === 'contactSection') { block.image = defaultImageId } if (block.blockType === 'servicesList') { if (block.items) { block.items = block.items.map((i: any) => ({ ...i, image: defaultImageId })) } } return block }) try { await payload.update({ collection: 'pages', id: pageId, locale: loc, data: { title: loc === 'en' ? (enTitles[slug] || pageSnapshot[baseLoc].title) : (pageSnapshot[baseLoc]?.title || pageSnapshot.pl.title), layout } }) console.log(`Successfully fixed ${slug} layout for ${loc}`) } catch(e) { console.error(`Failed to fix ${slug} for ${loc}`) } } await updateLayout('pl', 'pl') if (pageSnapshot.de) { await updateLayout('de', 'de') } await updateLayout('en', 'pl') // Clone EN from PL base } process.exit(0) } run().catch(console.error)