import { existsSync } from "node:fs"; import { Hono } from "hono"; import { getDb } from "../db/index"; const app = new Hono(); interface PathInfo { prefix: string; itemCount: number; accessible: boolean; } app.get("/", (c) => { const db = getDb(); const rows = db .query<{ prefix: string; count: number }, []>( `SELECT substr(file_path, 1, instr(substr(file_path, 2), '/') + 1) AS prefix, COUNT(*) AS count FROM media_items WHERE file_path IS NOT NULL AND file_path != '' GROUP BY prefix ORDER BY prefix`, ) .all(); const paths: PathInfo[] = rows.map((r: { prefix: string; count: number }) => ({ prefix: r.prefix, itemCount: r.count, accessible: existsSync(r.prefix), })); return c.json({ paths }); }); export default app;