changemaker.lite/api/scripts/reexport-pages.ts

81 lines
2.3 KiB
TypeScript

#!/usr/bin/env tsx
/**
* Re-export landing pages that are marked as published but missing their HTML override files.
* This script fetches each page and triggers an update to regenerate the exports.
*/
import { prisma } from '../src/config/database';
import { pagesService } from '../src/modules/pages/pages.service';
import { logger } from '../src/utils/logger';
async function reexportPages() {
try {
// Find pages that are published but might be missing exports
const pages = await prisma.landingPage.findMany({
where: {
published: true,
mkdocsPath: { not: null },
},
select: {
id: true,
slug: true,
title: true,
description: true,
editorMode: true,
blocks: true,
htmlOutput: true,
cssOutput: true,
mkdocsPath: true,
mkdocsExportMode: true,
mkdocsHideNav: true,
mkdocsHideToc: true,
published: true,
seoTitle: true,
seoDescription: true,
},
});
logger.info(`Found ${pages.length} published pages with mkdocsPath set`);
for (const page of pages) {
logger.info(`Re-exporting page: ${page.slug} (${page.id})`);
try {
// Trigger update with same data - this will re-export the page
await pagesService.update(page.id, {
title: page.title,
description: page.description ?? undefined,
editorMode: page.editorMode,
blocks: page.blocks,
htmlOutput: page.htmlOutput ?? undefined,
cssOutput: page.cssOutput ?? undefined,
mkdocsPath: page.mkdocsPath ?? undefined,
mkdocsExportMode: page.mkdocsExportMode,
mkdocsHideNav: page.mkdocsHideNav,
mkdocsHideToc: page.mkdocsHideToc,
published: true,
seoTitle: page.seoTitle ?? undefined,
seoDescription: page.seoDescription ?? undefined,
});
logger.info(`✓ Successfully re-exported ${page.slug}`);
} catch (err) {
logger.error(`✗ Failed to re-export ${page.slug}:`, err);
}
}
logger.info('Re-export complete');
} catch (err) {
logger.error('Re-export script failed:', err);
throw err;
} finally {
await prisma.$disconnect();
}
}
reexportPages().catch((err) => {
console.error('Fatal error:', err);
process.exit(1);
});