55 lines
1.3 KiB
TypeScript
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();
|
|
});
|