Files
homaroma/apps/backend/scripts/fix-menus.ts
T
2026-06-15 21:04:50 -04:00

55 lines
1.3 KiB
TypeScript

import prisma from '../src/lib/prisma';
function fixNode(node: any) {
if (node.translations) {
const labelKey = node.title !== undefined ? 'title' : 'label';
if (typeof node[labelKey] === 'string') {
node[labelKey] = { en: node[labelKey] };
}
node[labelKey] = { ...(node[labelKey] || {}), ...node.translations };
delete node.translations;
}
if (node.columns && Array.isArray(node.columns)) {
node.columns.forEach((col: any) => fixNode(col));
}
if (node.links && Array.isArray(node.links)) {
node.links.forEach((link: any) => fixNode(link));
}
if (node.items && Array.isArray(node.items)) {
node.items.forEach((item: any) => fixNode(item));
}
}
async function main() {
const menu = await prisma.menu.findUnique({
where: { name: 'main' }
});
if (!menu || !menu.payload) {
console.log('No main menu payload found');
return;
}
const payload = menu.payload as any[];
console.log('Original payload length:', payload.length);
payload.forEach(fixNode);
await prisma.menu.update({
where: { name: 'main' },
data: { payload }
});
console.log('Menu fixed successfully');
}
main()
.catch(e => {
console.error(e);
process.exit(1);
})
.finally(async () => {
await prisma.$disconnect();
});