80 lines
2.1 KiB
TypeScript
80 lines
2.1 KiB
TypeScript
import { FastifyRequest, FastifyReply } from "fastify";
|
|
import { CreateOrgInput, UpdateOrgInput } from "./organization.schema";
|
|
import {
|
|
createOrg,
|
|
deleteOrg,
|
|
getOrg,
|
|
listOrgs,
|
|
updateOrg,
|
|
} from "./organization.service";
|
|
import { PageQueryParams } from "../pagination";
|
|
|
|
export async function createOrgHandler(req: FastifyRequest, res: FastifyReply) {
|
|
const input = req.body as CreateOrgInput;
|
|
|
|
try {
|
|
const authUser = req.user;
|
|
const org = await createOrg(input, authUser.tenantId);
|
|
return res.code(201).send(org);
|
|
} catch (err) {
|
|
return err;
|
|
}
|
|
}
|
|
|
|
export async function getOrgHandler(req: FastifyRequest, res: FastifyReply) {
|
|
const { orgId } = req.params as { orgId: string };
|
|
|
|
try {
|
|
const authUser = req.user;
|
|
const org = await getOrg(orgId, authUser.tenantId);
|
|
if (org === null)
|
|
return res.code(404).send({ error: "resource not found" });
|
|
|
|
return res.code(200).send(org);
|
|
} catch (err) {
|
|
return err;
|
|
}
|
|
}
|
|
|
|
export async function listOrgsHandler(req: FastifyRequest, res: FastifyReply) {
|
|
const queryParams = req.query as PageQueryParams;
|
|
|
|
try {
|
|
const authUser = req.user;
|
|
const orgList = await listOrgs(queryParams, authUser.tenantId);
|
|
return res.code(200).send(orgList);
|
|
} catch (err) {
|
|
return err;
|
|
}
|
|
}
|
|
|
|
export async function updateOrgHandler(req: FastifyRequest, res: FastifyReply) {
|
|
const input = req.body as UpdateOrgInput;
|
|
const { orgId } = req.params as { orgId: string };
|
|
|
|
try {
|
|
const authUser = req.user;
|
|
const updatedOrg = await updateOrg(input, orgId, authUser.tenantId);
|
|
if (!updatedOrg) return res.code(404).send({ error: "resource not found" });
|
|
|
|
return res.code(200).send(updatedOrg);
|
|
} catch (err) {
|
|
return err;
|
|
}
|
|
}
|
|
|
|
export async function deleteOrgHandler(req: FastifyRequest, res: FastifyReply) {
|
|
const { orgId } = req.params as { orgId: string };
|
|
|
|
try {
|
|
const authUser = req.user;
|
|
const deleteResult = await deleteOrg(orgId, authUser.tenantId);
|
|
if (deleteResult.deletedCount === 0)
|
|
return res.code(404).send({ error: "resource not found" });
|
|
|
|
return res.code(204).send();
|
|
} catch (err) {
|
|
return err;
|
|
}
|
|
}
|