aozhiwei d8dfd4dd67 1
2023-07-13 14:01:39 +08:00

60 lines
1.2 KiB
JavaScript

const constant = require('./constant');
const dbHash = {};
[
constant.GAMEDB_NAME,
constant.BCEVENTDB_NAME,
constant.BCNFTDB_NAME
].forEach(
(item) => {
dbHash[item] = {
'lockTimes': 0,
'conn': null
};
}
);
async function internalCreateConn(app, name) {
if (!dbHash.hasOwnProperty(name)) {
throw new Error('dbpool error dbname:' + name);
}
const dbObj = dbHash[name];
while (dbObj.lockTimes > 0) {
await new Promise(function (resolve, reject) {
setTimeout(function () {
resolve();
}, 1000);
});
}
if (!dbObj.conn) {
++dbObj.lockTimes;
try {
const {err, conn} = await app.getDbConn(name);
if (err) {
throw new Error('getGBcEventConn error:' + err);
}
dbObj.conn = conn;
} finally {
--dbObj.lockTimes;
}
}
return dbObj.conn;
}
async function getBcEventConn(app) {
return await internalCreateConn(app, constant.BCEVENTDB_NAME);
}
async function getBcNftConn(app) {
return await internalCreateConn(app, constant.BCNFTDB_NAME);
}
async function getGameConn(app) {
return await internalCreateConn(app, constant.GAMEDB_NAME);
}
exports.getBcEventConn = getBcEventConn;
exports.getBcNftConn = getBcNftConn;
exports.getGameConn = getGameConn;