T4/Phase 2C-11: port error log routes to Hono (2 routes)
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
import { Hono } from "hono";
|
||||
import { db, errorLogs } from "@project-e/db";
|
||||
import { and, desc, eq } from "drizzle-orm";
|
||||
import { requireAuth, AuthError } from "../middleware/auth";
|
||||
|
||||
export const errorLogRoutes = new Hono();
|
||||
|
||||
// GET /api/error-log?level=...&from=... — List recent errors
|
||||
errorLogRoutes.get("/", async (c) => {
|
||||
try {
|
||||
await requireAuth(c);
|
||||
const url = new URL(c.req.url);
|
||||
const level = url.searchParams.get("level");
|
||||
const limit = Math.min(200, Math.max(1, parseInt(url.searchParams.get("limit") || "50")));
|
||||
|
||||
const conditions: any[] = [];
|
||||
if (level) {
|
||||
conditions.push(eq(errorLogs.level, level));
|
||||
}
|
||||
|
||||
const items = await db.select()
|
||||
.from(errorLogs)
|
||||
.where(and(...conditions))
|
||||
.orderBy(desc(errorLogs.createdAt))
|
||||
.limit(limit);
|
||||
|
||||
return c.json({ items, totalItems: items.length });
|
||||
} catch (error) {
|
||||
if (error instanceof AuthError) return c.json({ error: { code: error.code, message: error.message } }, error.status as any);
|
||||
console.error("[error-log] GET error:", error);
|
||||
return c.json({ error: { code: "INTERNAL_ERROR", message: "Failed to list error logs" } }, 500);
|
||||
}
|
||||
});
|
||||
|
||||
// DELETE /api/error-log — Clear all error logs
|
||||
errorLogRoutes.delete("/", async (c) => {
|
||||
try {
|
||||
await requireAuth(c);
|
||||
const allLogs = await db.select({ id: errorLogs.id }).from(errorLogs);
|
||||
await db.delete(errorLogs);
|
||||
return c.json({ deleted: allLogs.length });
|
||||
} catch (error) {
|
||||
if (error instanceof AuthError) return c.json({ error: { code: error.code, message: error.message } }, error.status as any);
|
||||
console.error("[error-log] DELETE error:", error);
|
||||
return c.json({ error: { code: "INTERNAL_ERROR", message: "Failed to clear error logs" } }, 500);
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user