This commit is contained in:
aozhiwei 2023-07-13 14:01:39 +08:00
parent 19bee7faf6
commit d8dfd4dd67

View File

@ -1,7 +1,6 @@
const constant = require('./constant');
const dbHash = {
};
const dbHash = {};
[
constant.GAMEDB_NAME,
@ -9,24 +8,50 @@ const dbHash = {
constant.BCNFTDB_NAME
].forEach(
(item) => {
dbHash[item] = {};
dbHash[item] = {
'lockTimes': 0,
'conn': null
};
}
);
async function internalCreateConn(name) {
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() {
return await internalCreateConn(constant.BCEVENTDB_NAME);
async function getBcEventConn(app) {
return await internalCreateConn(app, constant.BCEVENTDB_NAME);
}
async function getBcNftConn() {
return await internalCreateConn(constant.BCNFTDB_NAME);
async function getBcNftConn(app) {
return await internalCreateConn(app, constant.BCNFTDB_NAME);
}
async function getGameConn() {
return await internalCreateConn(constant.GAMEDB_NAME);
async function getGameConn(app) {
return await internalCreateConn(app, constant.GAMEDB_NAME);
}
exports.getBcEventConn = getBcEventConn;