Refactor code structure for improved readability and maintainability

This commit is contained in:
jhartworks
2026-09-16 12:41:24 +02:00
parent bfce688f6a
commit 4d8b07fc68
22 changed files with 2670 additions and 96 deletions
+2 -2
View File
@@ -1,4 +1,4 @@
FROM node:20-alpine
FROM node:22-alpine
WORKDIR /app
@@ -7,4 +7,4 @@ RUN npm install
COPY src ./src
CMD ["npm", "start"]
CMD ["npm", "start"]
+2 -1
View File
@@ -4,7 +4,8 @@
"private": true,
"type": "module",
"scripts": {
"start": "node src/index.js"
"start": "node src/index.js",
"check": "node --check src/index.js"
},
"dependencies": {
"mysql2": "^3.12.0"
+7 -5
View File
@@ -7,6 +7,7 @@ const maxConcurrency = Math.max(1, Math.min(16, Number(process.env.SYMCON_MAX_CO
const sourcePollState = new Map();
const valueCache = new Map();
let polling = false;
let lastKnownGoodStore = { sources: [], datapoints: [] };
const db = mysql.createPool({
host: process.env.DB_HOST || "mariadb",
@@ -67,17 +68,18 @@ async function updateWorkerState(source, status, error = "") {
function readStore() {
if (!existsSync(sourcesFile)) {
return { sources: [], datapoints: [] };
return structuredClone(lastKnownGoodStore);
}
try {
const store = JSON.parse(readFileSync(sourcesFile, "utf8"));
return {
lastKnownGoodStore = {
sources: Array.isArray(store.sources) ? store.sources : [],
datapoints: Array.isArray(store.datapoints) ? store.datapoints : [],
};
return structuredClone(lastKnownGoodStore);
} catch (error) {
console.warn("Quellenkonfiguration konnte nicht gelesen werden:", error.message);
return { sources: [], datapoints: [] };
console.warn("Quellenkonfiguration konnte nicht gelesen werden, letzter gültiger Stand wird verwendet:", error.message);
return structuredClone(lastKnownGoodStore);
}
}
@@ -262,4 +264,4 @@ setInterval(() => pollDueSources().catch((error) => console.error("IP-Symcon Pol
ensureWorkerStateTable()
.then(() => pollDueSources())
.catch((error) => console.error("IP-Symcon Start-Polling fehlgeschlagen:", error.message));
console.log(`SE LTD Symcon Collector gestartet (Intervall-Prüfung ${pollTickMs} ms, Parallelität ${maxConcurrency}).`);
console.log(`SE LTD Symcon Collector gestartet (Intervall-Prüfung ${pollTickMs} ms, Parallelität ${maxConcurrency}).`);