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