feat(18-02): add global item routes, item link/unlink endpoints, and route tests

- GET /api/global-items with optional q search parameter
- GET /api/global-items/:id with ownerCount
- POST /api/items/:id/link to link user item to global item
- DELETE /api/items/:id/link to unlink
- Route registered in index.ts
- 10 route tests covering all endpoints
This commit is contained in:
2026-04-05 13:07:26 +02:00
parent 60dd9f4934
commit d97d5d92ba
4 changed files with 250 additions and 1 deletions

View File

@@ -0,0 +1,30 @@
import { Hono } from "hono";
import { parseId } from "../lib/params.ts";
import {
getGlobalItemWithOwnerCount,
searchGlobalItems,
} from "../services/global-item.service.ts";
type Env = { Variables: { db?: any } };
const app = new Hono<Env>();
app.get("/", (c) => {
const db = c.get("db");
const q = c.req.query("q");
const items = searchGlobalItems(db, q || undefined);
return c.json(items);
});
app.get("/:id", (c) => {
const db = c.get("db");
const id = parseId(c.req.param("id"));
if (!id) return c.json({ error: "Invalid global item ID" }, 400);
const item = getGlobalItemWithOwnerCount(db, id);
if (!item) return c.json({ error: "Global item not found" }, 404);
return c.json(item);
});
export { app as globalItemRoutes };