documents.js 933 B

123456789101112131415161718192021222324252627
  1. import { Router } from "express";
  2. import { z } from "zod";
  3. import { listDocuments, deleteDocumentsBySource } from "../services/documentsService.js";
  4. import { requireUser } from "../middleware/requireUser.js";
  5. export const documentsRouter = Router();
  6. documentsRouter.get("/", requireUser, async (req, res, next) => {
  7. try {
  8. const limit = z.coerce.number().int().positive().max(200).catch(50).parse(req.query.limit);
  9. const offset = z.coerce.number().int().nonnegative().optional().parse(req.query.offset);
  10. const result = await listDocuments({ limit, offset });
  11. res.json(result);
  12. } catch (err) {
  13. next(err);
  14. }
  15. });
  16. documentsRouter.delete("/source/:source", requireUser, async (req, res, next) => {
  17. try {
  18. const source = z.string().min(1).max(255).parse(decodeURIComponent(req.params.source));
  19. await deleteDocumentsBySource(source);
  20. res.json({ ok: true });
  21. } catch (err) {
  22. next(err);
  23. }
  24. });