Files
permit-api/src/task/task.route.ts

83 lines
1.5 KiB
TypeScript

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
);
}