64 lines
1.3 KiB
JavaScript
64 lines
1.3 KiB
JavaScript
const mysql = require("mysql2");
|
|
const { loadConfig } = require("./config-manager");
|
|
|
|
let pool = null;
|
|
|
|
function initPool() {
|
|
const config = loadConfig();
|
|
|
|
// ✅ Setup-Modus: noch keine config.enc → kein Pool
|
|
if (!config || !config.db) return null;
|
|
|
|
return mysql.createPool({
|
|
host: config.db.host,
|
|
port: config.db.port || 3306,
|
|
user: config.db.user,
|
|
password: config.db.password,
|
|
database: config.db.name,
|
|
waitForConnections: true,
|
|
connectionLimit: 10,
|
|
queueLimit: 0,
|
|
});
|
|
}
|
|
|
|
function getPool() {
|
|
if (!pool) pool = initPool();
|
|
return pool;
|
|
}
|
|
|
|
function resetPool() {
|
|
pool = null;
|
|
}
|
|
|
|
/**
|
|
* ✅ Proxy damit alter Code weitergeht:
|
|
* const db = require("../db");
|
|
* await db.query(...)
|
|
*/
|
|
const dbProxy = new Proxy(
|
|
{},
|
|
{
|
|
get(target, prop) {
|
|
const p = getPool();
|
|
|
|
if (!p) {
|
|
throw new Error(
|
|
"❌ DB ist noch nicht konfiguriert (config.enc fehlt). Bitte zuerst Setup ausführen: http://127.0.0.1:51777/setup",
|
|
);
|
|
}
|
|
|
|
const value = p[prop];
|
|
|
|
if (typeof value === "function") {
|
|
return value.bind(p);
|
|
}
|
|
|
|
return value;
|
|
},
|
|
},
|
|
);
|
|
|
|
module.exports = dbProxy;
|
|
module.exports.getPool = getPool;
|
|
module.exports.resetPool = resetPool;
|