untested WIP

This commit is contained in:
2026-01-24 16:59:50 -06:00
parent 935c7296f6
commit 4be36e6ca0
56 changed files with 8645 additions and 3 deletions
+5
View File
@@ -0,0 +1,5 @@
node_modules
# Keep environment variables out of version control
.env
/generated/prisma
+12
View File
@@ -0,0 +1,12 @@
// This file was generated by Prisma, and assumes you run Prisma commands using `bun --bun run prisma [command]`.
import { defineConfig, env } from "prisma/config";
export default defineConfig({
schema: "prisma/schema.prisma",
migrations: {
path: "prisma/migrations",
},
datasource: {
url: env("DATABASE_URL"),
},
});
+53
View File
@@ -0,0 +1,53 @@
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);
app.route("/v1", v1);
export default app;
+12
View File
@@ -0,0 +1,12 @@
import { Hono } from "hono/tiny";
import { createRoute } from "../modules/api-utils/createRoute";
/* /v1/teapot */
export default createRoute("get", ["/"], (c) => {
c.status(418);
return c.json({
status: 418,
message: "I'm not a teapot",
successful: true,
});
});