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