added settings page

This commit is contained in:
2026-05-29 22:16:18 +02:00
parent 3582e377f1
commit 344f0461b4
14 changed files with 275 additions and 42 deletions
+11 -1
View File
@@ -36,4 +36,14 @@ CREATE TABLE IF NOT EXISTS products (
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (storage_location) REFERENCES storage_locations(uuid) ON DELETE CASCADE
);
);
CREATE TABLE IF NOT EXISTS app_settings (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL UNIQUE,
value VARCHAR(500) DEFAULT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
INSERT INTO app_settings (name, value) VALUES ("app-name", null), ("currency", null);
@@ -40,3 +40,35 @@ export const loginUser = async (username) => {
return { code: "eu003" };
}
};
export const updateSettings = async (payload) => {
const appName = payload["app-name"];
const currency = payload.currency;
const [result] = await pool.query(
`UPDATE app_settings
SET value = CASE name
WHEN "app-name" THEN ?
WHEN "currency" THEN ?
ELSE value
END
WHERE name IN ("app-name", "currency");`,
[appName, currency],
);
if (result.affectedRows > 0) {
return { code: "su003" };
} else {
return { code: "eu004" };
}
};
export const getSettings = async () => {
const [result] = await pool.query(`SELECT * FROM app_settings;`);
if (result.length > 0) {
return { code: "su004", result };
} else {
return { code: "eu005" };
}
};
+55 -1
View File
@@ -1,7 +1,12 @@
import express from "express";
import dotenv from "dotenv";
import { authenticate, generateToken } from "../../services/tokenService.js";
import { findUser, loginUser } from "./database/users.database.js";
import {
findUser,
loginUser,
updateSettings,
getSettings,
} from "./database/users.database.js";
dotenv.config();
const router = express.Router();
@@ -9,6 +14,55 @@ router.post("/verify-token", authenticate, async (req, res) => {
res.sendStatus(200);
});
router.post("/update-app-settings", authenticate, async (req, res) => {
const appName = req.body.appName;
const currency = req.body.currency;
console.log(req.body);
const result = await updateSettings(req.body);
if (result.code === "su003") {
res.status(201).json({
success: true,
code: "su003",
data: result.data,
message: null,
});
}
if (result.code === "eu004") {
res.status(500).json({
success: false,
code: "eu004",
data: null,
message: "Unexpected server error",
});
}
});
router.get("/settings", authenticate, async (req, res) => {
const result = await getSettings();
if (result.code === "su004") {
res.status(201).json({
success: true,
code: "su004",
data: result.result,
message: null,
});
}
if (result.code === "eu005") {
res.status(500).json({
success: false,
code: "eu005",
data: null,
message: "Unexpected server error",
});
}
});
router.post("/login", async (req, res) => {
const username = req.body.username;
const password = req.body.password;