41 lines
1.1 KiB
TypeScript
41 lines
1.1 KiB
TypeScript
import { Router } from 'express';
|
|
import { eq } from 'drizzle-orm';
|
|
import { db } from '../db/client';
|
|
import { settings } from '../db/schema';
|
|
|
|
const router = Router();
|
|
|
|
const ALLOWED_KEYS = ['rabbitry_name', 'weight_unit', 'kit_prefix', 'theme', 'default_breed'] as const;
|
|
|
|
router.get('/', (req, res) => {
|
|
const rows = db.select().from(settings).all();
|
|
const result: Record<string, string | null> = {};
|
|
for (const row of rows) {
|
|
result[row.key] = row.value;
|
|
}
|
|
res.json(result);
|
|
});
|
|
|
|
router.patch('/', (req, res) => {
|
|
const keys = Object.keys(req.body);
|
|
const unknownKey = keys.find((key) => !ALLOWED_KEYS.includes(key as (typeof ALLOWED_KEYS)[number]));
|
|
|
|
if (unknownKey) {
|
|
res.status(400).json({ error: `Unknown setting: ${unknownKey}` });
|
|
return;
|
|
}
|
|
|
|
for (const key of keys) {
|
|
db.update(settings).set({ value: req.body[key] }).where(eq(settings.key, key)).run();
|
|
}
|
|
|
|
const rows = db.select().from(settings).all();
|
|
const result: Record<string, string | null> = {};
|
|
for (const row of rows) {
|
|
result[row.key] = row.value;
|
|
}
|
|
res.json(result);
|
|
});
|
|
|
|
export default router;
|