generated from Dicken/dickendock
Bugfixes (Dark Mode, Dropdown-Kontrast, IP-Suche), Lesezeichen-Ausbau (Farbe, Beschreibung, Favicon), Zuletzt-besucht, Spaeter-lesen, kombinierter Import-Export, Scanner-Reconciliation, Admin-Ueberarbeitung
This commit is contained in:
27
apps/backend/src/routes/recentVisits.ts
Normal file
27
apps/backend/src/routes/recentVisits.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
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 };
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user