36 lines
1002 B
TypeScript
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
|
|
};
|
|
});
|