diff --git a/server/api/folders/[...slug].get.ts b/server/api/folders/[...slug].get.ts deleted file mode 100644 index 40a4308..0000000 --- a/server/api/folders/[...slug].get.ts +++ /dev/null @@ -1,35 +0,0 @@ -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 - }; -}); diff --git a/server/api/folders/index.post.ts b/server/api/folders/index.post.ts deleted file mode 100644 index 603978b..0000000 --- a/server/api/folders/index.post.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { readDb, writeDb, DashboardItem } from '../../utils/yamlDb'; -import { randomUUID } from 'crypto'; - -export default defineEventHandler(async (event) => { - const body = await readBody(event); - - if (!body.name) { - throw createError({ statusCode: 400, statusMessage: 'Name is required' }); - } - - let slug = body.name.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/(^-|-$)/g, ''); - if (!slug) slug = 'folder'; - - const newFolder: DashboardItem = { - id: randomUUID(), - type: 'folder', - name: body.name, - slug: slug, - parentId: body.parentId || null, - order: body.order || 0 - }; - - const items = readDb(); - items.push(newFolder); - writeDb(items); - - return newFolder; -}); diff --git a/server/api/links/index.post.ts b/server/api/links/index.post.ts deleted file mode 100644 index 2f6d446..0000000 --- a/server/api/links/index.post.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { readDb, writeDb, DashboardItem } from '../../utils/yamlDb'; -import { randomUUID } from 'crypto'; - -export default defineEventHandler(async (event) => { - const body = await readBody(event); - - if (!body.title || !body.url) { - throw createError({ statusCode: 400, statusMessage: 'Title and URL are required' }); - } - - const newLink: DashboardItem = { - id: randomUUID(), - type: 'link', - parentId: body.folderId || null, - title: body.title, - description: body.description || undefined, - url: body.url, - icon: body.icon || undefined, - color: body.color || undefined, - order: body.order || 0 - }; - - const items = readDb(); - items.push(newLink); - writeDb(items); - - return newLink; -}); diff --git a/server/api/reorder.post.ts b/server/api/reorder.post.ts deleted file mode 100644 index 400f777..0000000 --- a/server/api/reorder.post.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { readDb, writeDb } from '../utils/yamlDb'; - -export default defineEventHandler(async (event) => { - const body = await readBody(event); - - if (!body.items || !Array.isArray(body.items)) { - throw createError({ statusCode: 400, statusMessage: 'Invalid items array' }); - } - - const items = readDb(); - - // Expecting body.items: { id: string, type: 'folder' | 'link', order: number }[] - for (const updateItem of body.items) { - const existing = items.find(i => i.id === updateItem.id); - if (existing) { - existing.order = updateItem.order; - } - } - - writeDb(items); - - return { success: true }; -}); diff --git a/server/utils/yamlDb.ts b/server/utils/yamlDb.ts deleted file mode 100644 index d964fd6..0000000 --- a/server/utils/yamlDb.ts +++ /dev/null @@ -1,32 +0,0 @@ -import fs from 'fs'; -import path from 'path'; -import yaml from 'js-yaml'; - -const dbPath = path.resolve(process.cwd(), 'app/dashboard.yml'); - -export interface DashboardItem { - id: string; - type: 'folder' | 'link'; - parentId: string | null; - name?: string; - slug?: string; - title?: string; - url?: string; - description?: string; - icon?: string; - color?: string; - order: number; -} - -export function readDb(): DashboardItem[] { - if (!fs.existsSync(dbPath)) { - return []; - } - const fileContents = fs.readFileSync(dbPath, 'utf8'); - return (yaml.load(fileContents) as DashboardItem[]) || []; -} - -export function writeDb(data: DashboardItem[]) { - const yamlStr = yaml.dump(data); - fs.writeFileSync(dbPath, yamlStr, 'utf8'); -}