123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- const fs = require('fs-extra');
- const SqliteConnectionPool = require('./SqliteConnectionPool');
- const log = new (require('../core/AppLogger'))().log;//singleton
- const migrations = {
- 'app': require('./migrations/app'),
- 'readerStorage': require('./migrations/readerStorage'),
- };
- let instance = null;
- //singleton
- class ConnManager {
- constructor() {
- if (!instance) {
- this.inited = false;
- instance = this;
- }
- return instance;
- }
- async init(config) {
- this.config = config;
- this._pool = {};
- const force = null;//(config.branch == 'development' ? 'last' : null);
- for (const poolConfig of this.config.db) {
- const dbFileName = this.config.dataDir + '/' + poolConfig.fileName;
- //бэкап
- if (await fs.pathExists(dbFileName))
- await fs.copy(dbFileName, `${dbFileName}.bak`);
- const connPool = new SqliteConnectionPool();
- await connPool.open(poolConfig.connCount, dbFileName);
- log(`Opened database "${poolConfig.poolName}"`);
- //миграции
- const migs = migrations[poolConfig.poolName];
- if (migs && migs.data.length) {
- const applied = await connPool.migrate(migs.data, migs.table, force);
- if (applied.length)
- log(`${applied.length} migrations applied to "${poolConfig.poolName}"`);
- }
- this._pool[poolConfig.poolName] = connPool;
- }
- this.inited = true;
- }
- get pool() {
- return this._pool;
- }
- }
- module.exports = ConnManager;
|