Files
GearBox/src/server/routes/settings.ts
2026-04-03 15:31:11 +02:00

45 lines
1013 B
TypeScript

import { eq } from "drizzle-orm";
import { Hono } from "hono";
import { settings } from "../../db/schema.ts";
type Env = { Variables: { db?: any } };
const app = new Hono<Env>();
app.get("/:key", (c) => {
const database = c.get("db");
const key = c.req.param("key");
const row = database
.select()
.from(settings)
.where(eq(settings.key, key))
.get();
if (!row) return c.json({ error: "Setting not found" }, 404);
return c.json(row);
});
app.put("/:key", async (c) => {
const database = c.get("db");
const key = c.req.param("key");
const body = await c.req.json<{ value: string }>();
if (!body.value && body.value !== "") {
return c.json({ error: "value is required" }, 400);
}
database
.insert(settings)
.values({ key, value: body.value })
.onConflictDoUpdate({ target: settings.key, set: { value: body.value } })
.run();
const row = database
.select()
.from(settings)
.where(eq(settings.key, key))
.get();
return c.json(row);
});
export { app as settingsRoutes };