Files
dashlio/server/api/folders/[...slug].get.ts
2026-04-19 18:03:14 +01:00

36 lines
1002 B
TypeScript

import { readDb } from '../../utils/yamlDb';
export default defineEventHandler(async (event) => {
const slugParam = event.context.params?.slug;
const slugParts = slugParam ? slugParam.split('/').filter(Boolean) : [];
const items = readDb();
let currentFolderId: string | null = null;
let currentFolder = null;
// Resolve folder path
for (let i = 0; i < slugParts.length; i++) {
const part = slugParts[i];
// Find folder with this slug and parentId
const folder = items.find(item => item.type === 'folder' && item.slug === part && item.parentId === currentFolderId);
if (!folder) {
throw createError({ statusCode: 404, statusMessage: 'Folder not found' });
}
currentFolder = folder;
currentFolderId = folder.id;
}
// Get children of current folder
const children = items
.filter(item => item.parentId === currentFolderId)
.sort((a, b) => a.order - b.order);
return {
folder: currentFolder,
items: children
};
});