feat: manage winner detail chrome via payload

This commit is contained in:
syntaxbullet
2026-06-22 11:48:19 +02:00
parent 5bd1977c63
commit a19b703416
7 changed files with 311 additions and 17 deletions

View File

@@ -0,0 +1,57 @@
import 'dotenv/config'
import config from '@payload-config'
import { getPayload, type Payload } from 'payload'
import { preistraegerDetailContent } from '@/spa/preistraegerDetailContent'
const mediaByFilename = async (payload: Payload, filename: string) => {
const result = await payload.find({
collection: 'media',
limit: 1,
pagination: false,
where: { filename: { equals: filename } },
})
return result.docs[0]?.id
}
async function main() {
const payload = await getPayload({ config })
const sideImage = await mediaByFilename(payload, preistraegerDetailContent.sideImage.imageFilename)
const { imageFilename: _sideImageFilename, ...sideImageContent } = preistraegerDetailContent.sideImage
const winners = await payload.find({
collection: 'preistraeger',
draft: true,
overrideAccess: true,
pagination: false,
limit: 1000,
})
await Promise.all(
winners.docs.map((winner) =>
payload.update({
collection: 'preistraeger',
id: winner.id,
overrideAccess: true,
context: { disableRevalidate: true },
data: {
detailPage: {
...preistraegerDetailContent,
sideImage: {
...sideImageContent,
image: sideImage,
},
},
} as never,
}),
),
)
payload.logger.info(`Preloaded Preisträger detail CMS fields for ${winners.docs.length} records`)
}
main().catch((error) => {
console.error(error)
process.exit(1)
})