import { FastifyInstance } from "fastify"; import { $task } from "./task.schema"; import { createTaskHandler, deleteTaskHandler, getTaskHandler, listTaskHandler, updateTaskHandler, } from "./task.controller"; export async function taskRoutes(fastify: FastifyInstance) { fastify.post( "/", { schema: { body: $task("createTaskInput"), }, config: { requiredClaims: ["task:write"] }, preHandler: [fastify.authorize], }, createTaskHandler ); fastify.get( "/:taskId", { schema: { params: { type: "object", properties: { taskId: { type: "string" }, }, }, }, config: { requiredClaims: ["task:read"] }, preHandler: [fastify.authorize], }, getTaskHandler ); fastify.get( "/", { schema: { querystring: $task("pageQueryParams"), }, config: { requiredClaims: ["task:read"] }, preHandler: [fastify.authorize], }, listTaskHandler ); fastify.patch( "/:taskId", { schema: { params: { type: "object", properties: { taskId: { type: "string" } }, }, body: $task("updateTaskInput"), }, }, updateTaskHandler ); fastify.delete( "/:taskId", { schema: { params: { type: "object", properties: { taskId: { type: "string" } }, }, }, config: { requiredClaims: ["task:delete"] }, preHandler: [fastify.authorize], }, deleteTaskHandler ); }