/** * MITHOME-93 biztonsági lépés: a régi egyedi CMS (content-editor.js + * scripts/cms-*.js) eltávolítása előtt exportálja a Payload jelenlegi * (publikált) szöveges tartalmát egy olvasható JSON fájlba — mindkét * locale-lal (hu, en) —, hogy git-committolt, ember által is átnézhető * biztonsági mentés maradjon a leépítés pillanatáról. * * NEM helyettesíti a git history-t (a src/content/*.json fájlok minden * korábbi szerkesztése megvan commit-onként), és nem helyettesíti a * MongoDB-t (az az élő forrás) — ez egy plusz, könnyen olvasható * pillanatkép a "mielőtt törlünk, mentsünk" elv jegyében. * * Futtatás (proto/ mappából, futó MongoDB-vel és beállított env-ekkel): * node --env-file=.env.local --import tsx scripts/export-content-snapshot.ts */ import fs from 'fs' import path from 'path' import { fileURLToPath } from 'url' import { getPayload, type Payload } from 'payload' import config from '../src/payload.config' const scriptDir = path.dirname(fileURLToPath(import.meta.url)) const outDir = path.resolve(scriptDir, '../../docs/backups') const GLOBAL_SLUGS = ['home', 'about', 'services', 'contact', 'common'] as const const LOCALES = ['hu', 'en'] as const async function exportGlobals(payload: Payload) { const result: Record> = {} for (const slug of GLOBAL_SLUGS) { result[slug] = {} for (const locale of LOCALES) { result[slug][locale] = await payload.findGlobal({ slug, locale }) } } return result } async function exportCollection(payload: Payload, collection: 'legal-pages' | 'partners') { const result: Record = {} for (const locale of LOCALES) { const { docs } = await payload.find({ collection, locale, limit: 1000 }) result[locale] = docs } return result } async function run() { const payload = await getPayload({ config }) const snapshot = { exportedAt: new Date().toISOString(), reason: 'MITHOME-93 — régi CMS (content-editor.js) leépítése előtti biztonsági mentés', globals: await exportGlobals(payload), collections: { legalPages: await exportCollection(payload, 'legal-pages'), partners: await exportCollection(payload, 'partners'), }, } fs.mkdirSync(outDir, { recursive: true }) const filename = `payload-content-snapshot-${snapshot.exportedAt.replace(/[:.]/g, '-')}.json` const outPath = path.join(outDir, filename) fs.writeFileSync(outPath, JSON.stringify(snapshot, null, 2), 'utf8') payload.logger.info(`Snapshot kiírva: ${outPath}`) process.exit(0) } run()