Поправки по результату тестирования

This commit is contained in:
Book Pauk
2021-12-01 21:26:26 +07:00
parent 6286d663c9
commit 714eb3ae83
2 changed files with 32 additions and 7 deletions

View File

@@ -5,10 +5,7 @@ const ayncExit = new (require('../core/AsyncExit'))();//singleton
const { JembaDb, JembaDbThread } = require('./JembaDb'); const { JembaDb, JembaDbThread } = require('./JembaDb');
const log = new (require('../core/AppLogger'))().log;//singleton const log = new (require('../core/AppLogger'))().log;//singleton
const jembaMigrations = { const jembaMigrations = require('./jembaMigrations');
//'app': require('./jembaMigrations/app'),
'reader-storage': require('./jembaMigrations/reader-storage'),
};
let instance = null; let instance = null;
@@ -17,6 +14,7 @@ class JembaConnManager {
constructor() { constructor() {
if (!instance) { if (!instance) {
this.inited = false; this.inited = false;
this.closed = false;
instance = this; instance = this;
} }
@@ -24,7 +22,7 @@ class JembaConnManager {
return instance; return instance;
} }
async init(config) { async init(config, migs = jembaMigrations) {
if (this.inited) if (this.inited)
throw new Error('JembaConnManager initialized already'); throw new Error('JembaConnManager initialized already');
@@ -52,7 +50,6 @@ class JembaConnManager {
log(`Open "${dbConfig.dbName}" start`); log(`Open "${dbConfig.dbName}" start`);
await dbConn.openDb({dbPath, cacheSize: dbConfig.cacheSize, compressed: dbConfig.compressed, forceFileClosing: true}); await dbConn.openDb({dbPath, cacheSize: dbConfig.cacheSize, compressed: dbConfig.compressed, forceFileClosing: true});
ayncExit.add(dbConn.closeDb.bind(dbConn));
if (dbConfig.openAll) { if (dbConfig.openAll) {
try { try {
@@ -77,7 +74,7 @@ class JembaConnManager {
log(`Open "${dbConfig.dbName}" finish`); log(`Open "${dbConfig.dbName}" finish`);
//миграции //миграции
const mig = jembaMigrations[dbConfig.dbName]; const mig = migs[dbConfig.dbName];
if (mig && mig.data) { if (mig && mig.data) {
const applied = await this.migrate(dbConn, mig.data, mig.table, force); const applied = await this.migrate(dbConn, mig.data, mig.table, force);
if (applied.length) if (applied.length)
@@ -86,9 +83,27 @@ class JembaConnManager {
this._db[dbConfig.dbName] = dbConn; this._db[dbConfig.dbName] = dbConn;
} }
ayncExit.add(this.close.bind(this));
this.inited = true; this.inited = true;
} }
async close() {
if (!this.inited)
throw new Error('JembaConnManager not inited');
if (this.closed)
throw new Error('JembaConnManager closed');
for (const dbConfig of this.config.db) {
await this._db[dbConfig.dbName].closeDb();
}
this._db = {};
this.closed = true;
}
async migrate(db, migs, table, force) { async migrate(db, migs, table, force) {
const migrations = _.cloneDeep(migs).sort((a, b) => a.id - b.id); const migrations = _.cloneDeep(migs).sort((a, b) => a.id - b.id);
@@ -163,6 +178,12 @@ class JembaConnManager {
} }
get db() { get db() {
if (!this.inited)
throw new Error('JembaConnManager not inited');
if (this.closed)
throw new Error('JembaConnManager closed');
return this._db; return this._db;
} }
} }

View File

@@ -0,0 +1,4 @@
module.exports = {
//'app': require('./jembaMigrations/app'),
'reader-storage': require('./reader-storage'),
};