45 lines
1.3 KiB
JavaScript
45 lines
1.3 KiB
JavaScript
const { PrismaClient } = require('@prisma/client');
|
|
|
|
async function main() {
|
|
const prisma = new PrismaClient();
|
|
try {
|
|
const pages = await prisma.pageContent.findMany({
|
|
orderBy: [{ slug: 'asc' }, { locale: 'asc' }],
|
|
});
|
|
|
|
const grouped = pages.reduce((acc, page) => {
|
|
acc[page.slug] = acc[page.slug] || [];
|
|
acc[page.slug].push({ locale: page.locale, updatedAt: page.updatedAt });
|
|
return acc;
|
|
}, {});
|
|
|
|
for (const [slug, entries] of Object.entries(grouped)) {
|
|
console.log(`\n=== ${slug.toUpperCase()} ===`);
|
|
const pt = entries.find((e) => e.locale === 'pt');
|
|
const ptDate = pt ? new Date(pt.updatedAt) : null;
|
|
|
|
for (const locale of ['pt', 'en', 'es']) {
|
|
const entry = entries.find((e) => e.locale === locale);
|
|
if (!entry) {
|
|
console.log(`${locale.toUpperCase()}: missing`);
|
|
continue;
|
|
}
|
|
|
|
const dt = new Date(entry.updatedAt);
|
|
let status = 'ok';
|
|
if (ptDate && locale !== 'pt' && dt < ptDate) {
|
|
status = 'outdated';
|
|
}
|
|
console.log(`${locale.toUpperCase()}: ${dt.toISOString()} (${status})`);
|
|
}
|
|
}
|
|
} finally {
|
|
await prisma.$disconnect();
|
|
}
|
|
}
|
|
|
|
main().catch((err) => {
|
|
console.error(err);
|
|
process.exitCode = 1;
|
|
});
|