fix: add explicit DB context middleware for all API routes

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-03 15:31:11 +02:00
parent 4f434f39bf
commit 3016eb1a1a
2 changed files with 10 additions and 4 deletions

View File

@@ -1,5 +1,6 @@
import { Hono } from "hono"; import { Hono } from "hono";
import { serveStatic } from "hono/bun"; import { serveStatic } from "hono/bun";
import { db as prodDb } from "../db/index.ts";
import { seedDefaults } from "../db/seed.ts"; import { seedDefaults } from "../db/seed.ts";
import { mcpRoutes } from "./mcp/index.ts"; import { mcpRoutes } from "./mcp/index.ts";
import { requireAuth } from "./middleware/auth.ts"; import { requireAuth } from "./middleware/auth.ts";
@@ -22,7 +23,13 @@ app.get("/api/health", (c) => {
return c.json({ status: "ok" }); return c.json({ status: "ok" });
}); });
// Auth middleware for write operations (POST/PUT/DELETE) on non-auth routes // Inject production database into request context
app.use("/api/*", async (c, next) => {
c.set("db", prodDb);
return next();
});
// Auth middleware for write operations (POST/PUT/PATCH/DELETE) on non-auth routes
app.use("/api/*", async (c, next) => { app.use("/api/*", async (c, next) => {
// Skip auth routes — they handle their own auth // Skip auth routes — they handle their own auth
if (c.req.path.startsWith("/api/auth")) return next(); if (c.req.path.startsWith("/api/auth")) return next();

View File

@@ -1,6 +1,5 @@
import { eq } from "drizzle-orm"; import { eq } from "drizzle-orm";
import { Hono } from "hono"; import { Hono } from "hono";
import { db as prodDb } from "../../db/index.ts";
import { settings } from "../../db/schema.ts"; import { settings } from "../../db/schema.ts";
type Env = { Variables: { db?: any } }; type Env = { Variables: { db?: any } };
@@ -8,7 +7,7 @@ type Env = { Variables: { db?: any } };
const app = new Hono<Env>(); const app = new Hono<Env>();
app.get("/:key", (c) => { app.get("/:key", (c) => {
const database = c.get("db") ?? prodDb; const database = c.get("db");
const key = c.req.param("key"); const key = c.req.param("key");
const row = database const row = database
.select() .select()
@@ -20,7 +19,7 @@ app.get("/:key", (c) => {
}); });
app.put("/:key", async (c) => { app.put("/:key", async (c) => {
const database = c.get("db") ?? prodDb; const database = c.get("db");
const key = c.req.param("key"); const key = c.req.param("key");
const body = await c.req.json<{ value: string }>(); const body = await c.req.json<{ value: string }>();