generated from Dicken/dickendock
28 lines
1.1 KiB
TypeScript
28 lines
1.1 KiB
TypeScript
import type { FastifyInstance } from "fastify";
|
|
import * as recentVisitsRepo from "../db/repositories/recentVisits.js";
|
|
|
|
export async function recentVisitsRoutes(app: FastifyInstance): Promise<void> {
|
|
app.get("/api/recent-visits", async (request) => {
|
|
const query = request.query as { limit?: string };
|
|
const limit = query.limit ? Number(query.limit) : undefined;
|
|
return recentVisitsRepo.listRecentVisits(limit);
|
|
});
|
|
|
|
app.post("/api/recent-visits", async (request, reply) => {
|
|
const body = request.body as { itemType?: string; itemId?: string } | undefined;
|
|
if (body?.itemType !== "service" && body?.itemType !== "bookmark") {
|
|
return reply.code(400).send({ error: "itemType muss 'service' oder 'bookmark' sein" });
|
|
}
|
|
if (!body.itemId) {
|
|
return reply.code(400).send({ error: "itemId erforderlich" });
|
|
}
|
|
recentVisitsRepo.recordVisit(body.itemType, body.itemId);
|
|
return reply.code(201).send({ ok: true });
|
|
});
|
|
|
|
app.delete("/api/recent-visits", async () => {
|
|
recentVisitsRepo.clearRecentVisits();
|
|
return { ok: true };
|
|
});
|
|
}
|