import { getPayload } from 'payload' import configPromise from '../src/payload.config' import fs from 'fs' import path from 'path' async function run() { const payload = await getPayload({ config: configPromise }) // 1. Create media records const mediaDir = path.join(process.cwd(), 'media') const files = fs.readdirSync(mediaDir).filter(f => f !== '.DS_Store' && f !== 'placeholder-desk.jpg' && f.endsWith('.png')) const mediaIds = [] for (const file of files) { const filePath = path.join(mediaDir, file) const existing = await payload.find({ collection: 'media', where: { filename: { equals: file } } }) if (existing.docs.length > 0) { mediaIds.push(existing.docs[0].id) } else { console.log(`Creating media record for ${file}`) try { const created = await payload.create({ collection: 'media', data: { alt: 'Hero background' }, file: { data: fs.readFileSync(filePath), mimetype: 'image/png', name: file, size: fs.statSync(filePath).size } }) mediaIds.push(created.id) } catch (e) { console.error("Error creating", file, e.message) } } } console.log(`Available hero media IDs: ${mediaIds.join(', ')}`) if (mediaIds.length === 0) { console.error("No media ids found! Exiting.") process.exit(1) } // 2. Update all pages const locales = ['pl', 'de'] let mediaIndex = 0 for (const locale of locales) { const pages = await payload.find({ collection: 'pages', locale: locale as any, limit: 100 }) for (const page of pages.docs) { const imgId = mediaIds[mediaIndex % mediaIds.length] mediaIndex++ let changed = false const layout = page.layout || [] if (page.slug === 'home') { // Find hero block const heroBlock = layout.find((b: any) => b.blockType === 'hero') if (heroBlock && !heroBlock.backgroundImage) { heroBlock.backgroundImage = imgId changed = true console.log(`Updated home page (${locale}) hero image.`) } } else { // Find pageHeader block const headerBlock = layout.find((b: any) => b.blockType === 'pageHeader') if (headerBlock && !headerBlock.image) { headerBlock.image = imgId changed = true console.log(`Updated ${page.slug} (${locale}) pageHeader image.`) } else if (!headerBlock) { // If no pageHeader, should we add it? // Usually every page has it, except some legal pages. Let's just update existing ones first. } } if (changed) { await payload.update({ collection: 'pages', id: page.id, locale: locale as any, data: { layout } }) } } } console.log("Done updating pages.") process.exit(0) } run().catch(console.error)