Files
permit-api/src/permit/permit.controller.ts

105 lines
2.4 KiB
TypeScript

import { FastifyReply, FastifyRequest } from "fastify";
import { CreatePermitInput, UpdatePermitInput } from "./permit.schema";
import {
createPermit,
deletePermit,
getPermit,
listPermits,
searchPermit,
updatePermit,
} from "./permit.service";
import { PageQueryParams } from "../pagination";
export async function createPermitHandler(
req: FastifyRequest,
res: FastifyReply
) {
const input = req.body as CreatePermitInput;
try {
const permit = await createPermit(input, req.user);
return res.code(201).send(permit);
} catch (err) {
return err;
}
}
export async function getPermitHandler(req: FastifyRequest, res: FastifyReply) {
const { permitId } = req.params as { permitId: string };
try {
const permit = await getPermit(permitId, req.user.tenantId);
if (permit === null)
return res.code(404).send({ error: "resource not found" });
return res.code(200).send(permit);
} catch (err) {
return err;
}
}
export async function listPermitsHandler(
req: FastifyRequest,
res: FastifyReply
) {
const queryParams = req.query as PageQueryParams;
try {
const authUser = req.user;
const orgList = await listPermits(queryParams, authUser);
return res.code(200).send(orgList);
} catch (err) {
return err;
}
}
export async function updatePermitHandler(
req: FastifyRequest,
res: FastifyReply
) {
const input = req.body as UpdatePermitInput;
const { permitId } = req.params as { permitId: string };
try {
const updatedPermit = await updatePermit(input, permitId, req.user);
if (!updatedPermit)
return res.code(404).send({ error: "resource not found" });
return res.code(200).send(updatedPermit);
} catch (err) {
return err;
}
}
export async function deletePermitHandler(
req: FastifyRequest,
res: FastifyReply
) {
const { permitId } = req.params as { permitId: string };
try {
const deleteResult = await deletePermit(permitId, req.user.tenantId);
if (deleteResult.deletedCount === 0)
return res.code(404).send({ error: "resource not found" });
return res.code(204).send();
} catch (err) {
return err;
}
}
export async function searchPermitHandler(
req: FastifyRequest,
res: FastifyReply
) {
const queryParams = req.query as PageQueryParams;
try {
const authUser = req.user;
const permitList = await searchPermit(queryParams, authUser);
return res.code(200).send(permitList);
} catch (err) {
return err;
}
}