Add permits module

This commit is contained in:
2024-12-21 16:26:01 +05:30
parent cc2665544b
commit 6c1399ddd4
9 changed files with 412 additions and 2 deletions

View File

@@ -0,0 +1,94 @@
import { FastifyInstance } from "fastify";
import {
createPermitHandler,
deletePermitHandler,
getPermitHandler,
listPermitsHandler,
updatePermitHandler,
} from "./permit.controller";
import { $permit } from "./permit.schema";
export async function permitRoutes(fastify: FastifyInstance) {
fastify.post(
"/",
{
schema: {
body: $permit("createPermitInput"),
response: {
201: $permit("createPermitResponse"),
},
},
config: { requiredClaims: ["permit:write"] },
preHandler: [fastify.authorize],
},
createPermitHandler
);
fastify.get(
"/:permitId",
{
schema: {
params: {
type: "object",
properties: {
permitId: { type: "string" },
},
},
response: {
200: $permit("getPermitResponse"),
},
},
config: { requiredClaims: ["permit:read"] },
preHandler: [fastify.authorize],
},
getPermitHandler
);
fastify.get(
"/",
{
schema: {
querystring: $permit("pageQueryParams"),
response: {
200: $permit("listPermitResponse"),
},
},
config: { requiredClaims: ["permit:read"] },
preHandler: [fastify.authorize],
},
listPermitsHandler
);
fastify.patch(
"/:permitId",
{
schema: {
params: {
type: "object",
properties: { permitId: { type: "string" } },
},
body: $permit("updatePermitInput"),
response: {
200: $permit("getPermitResponse"),
},
},
},
updatePermitHandler
);
fastify.delete(
"/:permitId",
{
schema: {
params: {
type: "object",
properties: { permitId: { type: "string" } },
},
},
config: { requiredClaims: ["permit:delete"] },
preHandler: [fastify.authorize],
},
deletePermitHandler
);
}