Overhaul settings and implement user preferences. Also implements dark theme toggle as part of the user settings.

This commit is contained in:
Cameron Redmore 2025-04-25 17:32:33 +01:00
parent b84f0907a8
commit 727746030c
17 changed files with 760 additions and 378 deletions

View file

@ -0,0 +1,51 @@
import express from 'express';
import { getSetting, setSetting, getUserPreference, setUserPreference } from '../utils/settings.js';
import { handlePrismaError } from '../database.js';
const router = express.Router();
// --- Settings API --- //
// GET /api/settings/:key - Get a specific setting value
router.get('/:key', async(req, res) =>
{
const { key } = req.params;
try
{
const setting = await getSetting(key);
if (!setting)
{
return res.status(404).json({ error: `Setting '${key}' not found` });
}
res.status(200).json(setting);
}
catch (err)
{
handlePrismaError(res, err, `fetch setting '${key}'`);
}
});
// PUT /api/settings/:key - Update or create a specific setting
router.put('/:key', async(req, res) =>
{
const { key } = req.params;
const { value } = req.body;
if (typeof value === 'undefined')
{
return res.status(400).json({ error: 'Setting value is required in the request body' });
}
try
{
await setSetting(key, value);
res.status(200).json({ message: `Setting '${key}' updated successfully` });
}
catch (err)
{
handlePrismaError(res, err, `update setting '${key}'`);
}
});
export default router;