feat: add NWN server stack management service

This commit is contained in:
plenarius
2026-04-20 19:55:31 -04:00
parent 973310113c
commit dc45098cd1
3 changed files with 284 additions and 0 deletions
+70
View File
@@ -0,0 +1,70 @@
import { Router } from "express";
import {
startServer,
stopServer,
restartServer,
getServerStatus,
generateServerConfig,
seedDatabase,
} from "../services/server.service.js";
const router = Router();
router.get("/status", async (_req, res) => {
try {
const status = await getServerStatus();
res.json(status);
} catch (err: any) {
res.status(500).json({ error: err.message });
}
});
router.post("/start", async (_req, res) => {
try {
await startServer();
res.json({ ok: true });
} catch (err: any) {
res.status(500).json({ error: err.message });
}
});
router.post("/stop", async (_req, res) => {
try {
await stopServer();
res.json({ ok: true });
} catch (err: any) {
res.status(500).json({ error: err.message });
}
});
router.post("/restart", async (_req, res) => {
try {
await restartServer();
res.json({ ok: true });
} catch (err: any) {
res.status(500).json({ error: err.message });
}
});
router.post("/generate-config", async (_req, res) => {
try {
await generateServerConfig();
res.json({ ok: true });
} catch (err: any) {
res.status(500).json({ error: err.message });
}
});
router.post("/seed-db", async (req, res) => {
const { cdKey, playerName } = req.body;
if (!cdKey || !playerName)
return res.status(400).json({ error: "cdKey and playerName required" });
try {
await seedDatabase(cdKey, playerName);
res.json({ ok: true });
} catch (err: any) {
res.status(500).json({ error: err.message });
}
});
export default router;