128 lines
2.5 KiB
TypeScript
128 lines
2.5 KiB
TypeScript
import { FastifyInstance } from "fastify";
|
|
import {
|
|
createPermitHandler,
|
|
deletePermitHandler,
|
|
getPermitHandler,
|
|
getUniqueFieldValuesPermit,
|
|
listPermitsHandler,
|
|
searchPermitHandler,
|
|
updatePermitHandler,
|
|
} from "./permit.controller";
|
|
import { $permit } from "./permit.schema";
|
|
import { hideFields } from "../auth";
|
|
import {
|
|
createNoteHandler,
|
|
deleteNoteHandler,
|
|
listNotesHandler,
|
|
} from "../note/note.controller";
|
|
import { noteRoutes } from "../note/note.route";
|
|
|
|
export async function permitRoutes(fastify: FastifyInstance) {
|
|
fastify.post(
|
|
"/",
|
|
{
|
|
schema: {
|
|
body: $permit("createPermitInput"),
|
|
},
|
|
config: { requiredClaims: ["permit:write"] },
|
|
preHandler: [fastify.authorize],
|
|
},
|
|
createPermitHandler
|
|
);
|
|
|
|
fastify.get(
|
|
"/:permitId",
|
|
{
|
|
schema: {
|
|
params: {
|
|
type: "object",
|
|
properties: {
|
|
permitId: { type: "string" },
|
|
},
|
|
},
|
|
},
|
|
config: { requiredClaims: ["permit:read"] },
|
|
preHandler: [fastify.authorize],
|
|
},
|
|
getPermitHandler
|
|
);
|
|
|
|
fastify.get(
|
|
"/",
|
|
{
|
|
schema: {
|
|
querystring: $permit("pageQueryParams"),
|
|
},
|
|
|
|
config: { requiredClaims: ["permit:read"] },
|
|
preHandler: [fastify.authorize],
|
|
},
|
|
listPermitsHandler
|
|
);
|
|
|
|
fastify.patch(
|
|
"/:permitId",
|
|
{
|
|
schema: {
|
|
params: {
|
|
type: "object",
|
|
properties: { permitId: { type: "string" } },
|
|
},
|
|
body: $permit("updatePermitInput"),
|
|
},
|
|
},
|
|
updatePermitHandler
|
|
);
|
|
|
|
fastify.delete(
|
|
"/:permitId",
|
|
{
|
|
schema: {
|
|
params: {
|
|
type: "object",
|
|
properties: { permitId: { type: "string" } },
|
|
},
|
|
},
|
|
config: { requiredClaims: ["permit:delete"] },
|
|
preHandler: [fastify.authorize],
|
|
},
|
|
deletePermitHandler
|
|
);
|
|
|
|
fastify.get(
|
|
"/search",
|
|
{
|
|
schema: {
|
|
querystring: $permit("pageQueryParams"),
|
|
},
|
|
|
|
config: { requiredClaims: ["permit:read"] },
|
|
preHandler: [fastify.authorize],
|
|
},
|
|
searchPermitHandler
|
|
);
|
|
|
|
fastify.get(
|
|
"/fields/:field",
|
|
{
|
|
schema: {
|
|
params: {
|
|
type: "object",
|
|
properties: { field: { type: "string" } },
|
|
},
|
|
},
|
|
config: { requiredClaims: ["permit:read"] },
|
|
preHandler: [fastify.authorize],
|
|
},
|
|
getUniqueFieldValuesPermit
|
|
);
|
|
|
|
await noteRoutes(fastify, {
|
|
read: "permit:read",
|
|
write: "permit:write",
|
|
delete: "permit:delete",
|
|
});
|
|
|
|
fastify.addHook("onSend", hideFields("permits"));
|
|
}
|