61 lines
1.7 KiB
TypeScript
61 lines
1.7 KiB
TypeScript
import { Hono } from "hono";
|
|
import { apiResponse } from "../modules/api-utils/apiResponse";
|
|
import { ZodError } from "zod";
|
|
import { cors } from "hono/cors";
|
|
import GenericError from "../Errors/GenericError";
|
|
import teapot from "./teapot";
|
|
|
|
const app = new Hono();
|
|
const v1 = new Hono();
|
|
|
|
app.onError((err, ctx) => {
|
|
const errClassName = err.constructor.name;
|
|
|
|
if (
|
|
errClassName.toLowerCase().includes("prisma") ||
|
|
err.message.toLowerCase().includes("prisma") ||
|
|
err.name.toLowerCase().includes("prisma")
|
|
) {
|
|
console.trace(err);
|
|
return ctx.json(apiResponse.internalError(), 500);
|
|
}
|
|
|
|
if (err instanceof ZodError) {
|
|
return ctx.json(
|
|
apiResponse.zodError(err),
|
|
//@ts-ignore
|
|
apiResponse.zodError(err).status,
|
|
);
|
|
}
|
|
|
|
const response = apiResponse.error(err);
|
|
return ctx.json(response, response.status);
|
|
});
|
|
|
|
app.use("*", cors());
|
|
|
|
app.notFound((c) => {
|
|
const response = apiResponse.error(
|
|
new GenericError({
|
|
name: "NotFound",
|
|
message: `Cannot ${c.req.method.toUpperCase()} ${c.req.path}`,
|
|
status: 404,
|
|
cause: "Unknown",
|
|
}),
|
|
);
|
|
return c.json(response, response.status);
|
|
});
|
|
|
|
v1.route("/teapot", teapot);
|
|
v1.route("/auth", require("./routers/authRouter").default);
|
|
v1.route("/user", require("./routers/user").default);
|
|
v1.route("/company", require("./routers/companyRouter").default);
|
|
v1.route("/credential", require("./routers/credentialRouter").default);
|
|
v1.route("/credential-type", require("./routers/credentialTypeRouter").default);
|
|
v1.route("/role", require("./routers/roleRouter").default);
|
|
v1.route("/permissions", require("./routers/permissionRouter").default);
|
|
v1.route("/unifi", require("./routers/unifiRouter").default);
|
|
app.route("/v1", v1);
|
|
|
|
export default app;
|