83 lines
1.5 KiB
TypeScript
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
|
|
);
|
|
}
|