From 6c974d01e8c01e81433f88781f7c2a2d1f33e1c8 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 5 Mar 2026 17:38:35 +0100 Subject: [PATCH] refactor: split routes and controllers --- backend/controllers/resourceController.js | 36 ++++++++ backend/routes/resources.js | 12 +++ backend/server.js | 105 +++------------------- 3 files changed, 61 insertions(+), 92 deletions(-) create mode 100644 backend/controllers/resourceController.js create mode 100644 backend/routes/resources.js diff --git a/backend/controllers/resourceController.js b/backend/controllers/resourceController.js new file mode 100644 index 0000000..4bfa3a5 --- /dev/null +++ b/backend/controllers/resourceController.js @@ -0,0 +1,36 @@ +const pool = require("../db"); + +exports.getActive = async (req, res) => { + const [rows] = await pool.query( + "SELECT * FROM resources WHERE status != 'gekündigt'" + ); + res.json(rows); +}; + +exports.getCancelled = async (req, res) => { + const [rows] = await pool.query( + "SELECT * FROM resources WHERE status = 'gekündigt'" + ); + res.json(rows); +}; + +exports.create = async (req, res) => { + await pool.query("INSERT INTO resources SET ?", req.body); + res.json({ message: "Inserted" }); +}; + +exports.update = async (req, res) => { + await pool.query( + "UPDATE resources SET ? WHERE id = ?", + [req.body, req.params.id] + ); + res.json({ message: "Updated" }); +}; + +exports.remove = async (req, res) => { + await pool.query( + "DELETE FROM resources WHERE id = ?", + [req.params.id] + ); + res.json({ message: "Deleted" }); +}; diff --git a/backend/routes/resources.js b/backend/routes/resources.js new file mode 100644 index 0000000..094b1ac --- /dev/null +++ b/backend/routes/resources.js @@ -0,0 +1,12 @@ +const express = require("express"); +const router = express.Router(); +const controller = require("../controllers/resourceController"); + +router.get("/active", controller.getActive); +router.get("/cancelled", controller.getCancelled); + +router.post("/", controller.create); +router.put("/:id", controller.update); +router.delete("/:id", controller.remove); + +module.exports = router; diff --git a/backend/server.js b/backend/server.js index b91e916..9ab75eb 100644 --- a/backend/server.js +++ b/backend/server.js @@ -1,99 +1,20 @@ const express = require("express"); -const pool = require("./db"); const cors = require("cors"); - -const app = express(); -app.use(express.json()); -app.use(cors()); - -const BASE_PATH = "/resman/api"; const path = require("path"); -/* Static Files */ +const resourceRoutes = require("./routes/resources"); + +const app = express(); + +app.use(cors()); +app.use(express.json()); + +/* static frontend */ app.use("/resman", express.static(path.join(__dirname, "public"))); -/* Resourcen laden */ -app.get("/resman/api/resources", async (req, res) => { - const [rows] = await pool.query( - "SELECT * FROM resources WHERE status != 'gekündigt'" - ); - res.json(rows); +/* API routes */ +app.use("/resman/api/resources", resourceRoutes); + +app.listen(3000, () => { + console.log("ResMan running on port 3000"); }); - - -/* LIST Aktive resourcen*/ -app.get("/resman/api/resources/active", async (req, res) => { - - const [rows] = await pool.query( - "SELECT * FROM resources WHERE status != 'gekündigt'" - ); - - res.json(rows); - -}); - - -/* LIST Gekündigte resourcen*/ -app.get("/resman/api/resources/cancelled", async (req, res) => { - - const [rows] = await pool.query( - "SELECT * FROM resources WHERE status = 'gekündigt'" - ); - - console.log("Cancelled resources:", rows); - - res.json(rows); - -}); - - -/* INSERT */ -app.post(`${BASE_PATH}/resources`, async (req, res) => { - const data = req.body; - await pool.query("INSERT INTO resources SET ?", data); - res.json({ message: "Inserted" }); -}); - -/* UPDATE */ -app.put(`${BASE_PATH}/resources/:id`, async (req, res) => { - await pool.query("UPDATE resources SET ? WHERE id = ?", [ - req.body, - req.params.id - ]); - res.json({ message: "Updated" }); -}); - -/* DELETE */ -app.delete(`${BASE_PATH}/resources/:id`, async (req, res) => { - await pool.query("DELETE FROM resources WHERE id = ?", [ - req.params.id - ]); - res.json({ message: "Deleted" }); -}); - -/* COPY */ -app.post(`${BASE_PATH}/resources/:id/copy`, async (req, res) => { - await pool.query(` - INSERT INTO resources ( - name, produkt, provider, art, - kosten_monat, kosten_jahr, laufzeit_monate, - bemerkung, cpu, ram, disk, os, - ipv4_adresse, vlan_ip1, vlan_ip2, - ipv6_net, ipv6_adresse, - providername, bestelldatum, kuendbar_ab - ) - SELECT - CONCAT(name, ' (Copy)'), - produkt, provider, art, - kosten_monat, kosten_jahr, laufzeit_monate, - bemerkung, cpu, ram, disk, os, - ipv4_adresse, vlan_ip1, vlan_ip2, - ipv6_net, ipv6_adresse, - providername, bestelldatum, kuendbar_ab - FROM resources WHERE id = ? - `, [req.params.id]); - - res.json({ message: "Copied" }); -}); - -app.listen(3000, () => console.log("ResMan running on port 3000"));