feat: Add fresh database setup script and media handling improvements
- Introduced a new script for setting up a fresh database with ordered migration tasks. - Added a utility function to find media by filename, improving media handling in various scripts. - Updated preload scripts to utilize the new media fetching utility. - Refactored datenschutz, impressum, and mitglied-werden fields to use stable IDs and anchor IDs. - Enhanced home and network pages to accommodate new field structures. - Added new preload script for global CMS settings. - Improved code readability and organization across multiple files.
This commit is contained in:
67
src/scripts/preload-globals-cms.ts
Normal file
67
src/scripts/preload-globals-cms.ts
Normal file
@@ -0,0 +1,67 @@
|
||||
import 'dotenv/config'
|
||||
|
||||
import config from '@payload-config'
|
||||
import { getPayload, type Payload } from 'payload'
|
||||
import { mediaByFilename } from './mediaByFilename'
|
||||
|
||||
import { defaultFooterData, defaultHeaderData } from '@/spa/cmsNavigation'
|
||||
import { defaultSiteSettings } from '@/spa/siteSettings'
|
||||
|
||||
async function main() {
|
||||
const payload = await getPayload({ config })
|
||||
|
||||
const [logo, ewifLogo, partnerLogos, skylineImage] = await Promise.all([
|
||||
mediaByFilename(payload, 'bmp-logo.png'),
|
||||
mediaByFilename(payload, 'ewif-logo.png'),
|
||||
mediaByFilename(payload, 'partner-logos.png'),
|
||||
mediaByFilename(payload, 'munich-skyline.jpg'),
|
||||
])
|
||||
|
||||
const { logo: _headerLogo, languages, ...headerData } = defaultHeaderData
|
||||
const { logo: _footerLogo, partnerLogos: _defaultPartnerLogos, ...footerData } = defaultFooterData
|
||||
const { skylineImageUrl: _skylineImageUrl, ...siteSettingsData } = defaultSiteSettings
|
||||
|
||||
await Promise.all([
|
||||
payload.updateGlobal({
|
||||
slug: 'header',
|
||||
context: { disableRevalidate: true },
|
||||
data: {
|
||||
...headerData,
|
||||
logo,
|
||||
languages: languages.map((label) => ({ label })),
|
||||
} as never,
|
||||
}),
|
||||
payload.updateGlobal({
|
||||
slug: 'footer',
|
||||
context: { disableRevalidate: true },
|
||||
data: {
|
||||
...footerData,
|
||||
logo,
|
||||
partnerLogos: [
|
||||
{ alt: 'EWIF – Europäisches Wirtschaftsforum', image: ewifLogo },
|
||||
{
|
||||
alt: 'Hochschule für angewandtes Management · Gipfeldialog Altaussee',
|
||||
image: partnerLogos,
|
||||
},
|
||||
].filter((item) => item.image),
|
||||
} as never,
|
||||
}),
|
||||
payload.updateGlobal({
|
||||
slug: 'site-settings',
|
||||
context: { disableRevalidate: true },
|
||||
data: {
|
||||
...siteSettingsData,
|
||||
skylineImage,
|
||||
} as never,
|
||||
}),
|
||||
])
|
||||
|
||||
payload.logger.info('Preloaded global CMS settings.')
|
||||
await payload.destroy()
|
||||
process.exit(0)
|
||||
}
|
||||
|
||||
main().catch((error) => {
|
||||
console.error(error)
|
||||
process.exit(1)
|
||||
})
|
||||
Reference in New Issue
Block a user