resman/backend/routes/domains.js
2026-03-06 18:30:03 +01:00

121 lines
2.6 KiB
JavaScript

const express = require('express');
const router = express.Router();
const pool = require('../db');
// GET ALL DOMAINS
router.get('/', async (req, res) => {
try {
const [rows] = await pool.query(`
SELECT
d.id,
d.domain_name,
d.provider,
d.ip_address,
d.yearly_cost,
d.notes,
r.name AS resource_name
FROM domains d
LEFT JOIN resource_ips ip ON d.ip_address = ip.ip
LEFT JOIN resources r ON ip.resource_id = r.id
ORDER BY d.domain_name
`);
res.json(rows);
} catch (err) {
console.error("GET domains error:", err);
res.status(500).json({ error: "DB error" });
}
});
// GET SINGLE DOMAIN
router.get('/:id', async (req, res) => {
try {
const [rows] = await pool.query(
`SELECT * FROM domains WHERE id = ?`,
[req.params.id]
);
if (rows.length === 0) {
return res.status(404).json({ error: "Domain not found" });
}
res.json(rows[0]);
} catch (err) {
console.error("GET domain error:", err);
res.status(500).json({ error: "DB error" });
}
});
// CREATE DOMAIN
router.post('/', async (req, res) => {
try {
const { domain_name, provider, ip_address, yearly_cost, notes } = req.body;
const [result] = await pool.query(
`INSERT INTO domains
(domain_name, provider, ip_address, yearly_cost, notes)
VALUES (?, ?, ?, ?, ?)`,
[domain_name, provider, ip_address, yearly_cost, notes]
);
res.json({
message: "Domain created",
id: result.insertId
});
} catch (err) {
console.error("CREATE domain error:", err);
res.status(500).json({ error: "DB error" });
}
});
// UPDATE DOMAIN
router.put('/:id', async (req, res) => {
try {
const { domain_name, provider, ip_address, yearly_cost, notes } = req.body;
await pool.query(
`UPDATE domains SET
domain_name = ?,
provider = ?,
ip_address = ?,
yearly_cost = ?,
notes = ?
WHERE id = ?`,
[domain_name, provider, ip_address, yearly_cost, notes, req.params.id]
);
res.json({ message: "Domain updated" });
} catch (err) {
console.error("UPDATE domain error:", err);
res.status(500).json({ error: "DB error" });
}
});
// DELETE DOMAIN
router.delete('/:id', async (req, res) => {
try {
await pool.query(
`DELETE FROM domains WHERE id = ?`,
[req.params.id]
);
res.json({ message: "Domain deleted" });
} catch (err) {
console.error("DELETE domain error:", err);
res.status(500).json({ error: "DB error" });
}
});
module.exports = router;