paperclip/server/src/routes/activity.ts

36 lines
1 KiB
TypeScript
Raw Normal View History

import { Router } from "express";
import { z } from "zod";
import type { Db } from "@paperclip/db";
import { validate } from "../middleware/validate.js";
import { activityService } from "../services/activity.js";
const createActivitySchema = z.object({
action: z.string().min(1),
entityType: z.string().min(1),
entityId: z.string().uuid(),
agentId: z.string().uuid().optional().nullable(),
details: z.record(z.unknown()).optional().nullable(),
});
export function activityRoutes(db: Db) {
const router = Router();
const svc = activityService(db);
router.get("/", async (req, res) => {
const filters = {
agentId: req.query.agentId as string | undefined,
entityType: req.query.entityType as string | undefined,
entityId: req.query.entityId as string | undefined,
};
const result = await svc.list(filters);
res.json(result);
});
router.post("/", validate(createActivitySchema), async (req, res) => {
const event = await svc.create(req.body);
res.status(201).json(event);
});
return router;
}