Files
antrean-operasi/server/api/menus/delete.delete.ts
2026-01-22 09:11:15 +07:00

50 lines
1.3 KiB
TypeScript

import fs from 'fs/promises'
import path from 'path'
export default defineEventHandler(async (event) => {
try {
const { menuId, reference } = await readBody<{
menuId: string
reference: string
}>(event)
if (!menuId || !reference) {
throw createError({
statusCode: 400,
statusMessage: 'MenuId and reference are required'
})
}
const filePath = path.join(process.cwd(), 'matdash', 'data', 'menus.json')
const fileContent = await fs.readFile(filePath, 'utf-8')
const data = JSON.parse(fileContent)
// Remove menu item and its children recursively
const removeMenuItem = (items: any[], id: string): any[] => {
return items.filter(item => {
if (item.id === id) return false
if (item.children) {
item.children = removeMenuItem(item.children, id)
}
return true
})
}
data.menus = removeMenuItem(data.menus, menuId)
// Save updated data
await fs.writeFile(filePath, JSON.stringify(data, null, 2))
return {
success: true,
message: 'Menu deleted successfully'
}
} catch (error) {
console.error('Error deleting menu:', error)
throw createError({
statusCode: 500,
statusMessage: 'Failed to delete menu'
})
}
})