Рефакторинг, преобразование классов в синглтоны
This commit is contained in:
@@ -1,11 +1,12 @@
|
|||||||
const BaseController = require('./BaseController');
|
const BaseController = require('./BaseController');
|
||||||
const ReaderWorker = require('../core/ReaderWorker');
|
const ReaderWorker = require('../core/ReaderWorker');//singleton
|
||||||
const readerStorage = require('../core/readerStorage');
|
const ReaderStorage = require('../core/ReaderStorage');//singleton
|
||||||
const WorkerState = require('../core/WorkerState');//singleton
|
const WorkerState = require('../core/WorkerState');//singleton
|
||||||
|
|
||||||
class ReaderController extends BaseController {
|
class ReaderController extends BaseController {
|
||||||
constructor(config) {
|
constructor(config) {
|
||||||
super(config);
|
super(config);
|
||||||
|
this.readerStorage = new ReaderStorage();
|
||||||
this.readerWorker = new ReaderWorker(config);
|
this.readerWorker = new ReaderWorker(config);
|
||||||
this.workerState = new WorkerState();
|
this.workerState = new WorkerState();
|
||||||
}
|
}
|
||||||
@@ -39,7 +40,7 @@ class ReaderController extends BaseController {
|
|||||||
if (!request.items || Array.isArray(request.data))
|
if (!request.items || Array.isArray(request.data))
|
||||||
throw new Error(`key 'items' is empty`);
|
throw new Error(`key 'items' is empty`);
|
||||||
|
|
||||||
return await readerStorage.doAction(request);
|
return await this.readerStorage.doAction(request);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
error = e.message;
|
error = e.message;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,22 @@
|
|||||||
const SQL = require('sql-template-strings');
|
const SQL = require('sql-template-strings');
|
||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
|
|
||||||
const connManager = require('../db/connManager');
|
const ConnManager = require('../db/ConnManager');//singleton
|
||||||
|
|
||||||
|
let instance = null;
|
||||||
|
|
||||||
|
//singleton
|
||||||
class ReaderStorage {
|
class ReaderStorage {
|
||||||
constructor() {
|
constructor() {
|
||||||
this.storagePool = connManager.pool.readerStorage;
|
if (!instance) {
|
||||||
this.periodicCleanCache(3*3600*1000);//1 раз в 3 часа
|
this.connManager = new ConnManager();
|
||||||
|
this.storagePool = this.connManager.pool.readerStorage;
|
||||||
|
this.periodicCleanCache(3*3600*1000);//1 раз в 3 часа
|
||||||
|
|
||||||
|
instance = this;
|
||||||
|
}
|
||||||
|
|
||||||
|
return instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
async doAction(act) {
|
async doAction(act) {
|
||||||
@@ -113,6 +123,4 @@ class ReaderStorage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const readerStorage = new ReaderStorage();
|
module.exports = ReaderStorage;
|
||||||
|
|
||||||
module.exports = readerStorage;
|
|
||||||
@@ -8,13 +8,23 @@ const migrations = {
|
|||||||
'readerStorage': require('./migrations/readerStorage'),
|
'readerStorage': require('./migrations/readerStorage'),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let instance = null;
|
||||||
|
|
||||||
|
//singleton
|
||||||
class ConnManager {
|
class ConnManager {
|
||||||
constructor() {
|
constructor() {
|
||||||
this._pool = {};
|
if (!instance) {
|
||||||
|
this.inited = false;
|
||||||
|
|
||||||
|
instance = this;
|
||||||
|
}
|
||||||
|
|
||||||
|
return instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
async init(config) {
|
async init(config) {
|
||||||
this.config = config;
|
this.config = config;
|
||||||
|
this._pool = {};
|
||||||
|
|
||||||
const force = null;//(config.branch == 'development' ? 'last' : null);
|
const force = null;//(config.branch == 'development' ? 'last' : null);
|
||||||
|
|
||||||
@@ -39,6 +49,7 @@ class ConnManager {
|
|||||||
|
|
||||||
this._pool[poolConfig.poolName] = connPool;
|
this._pool[poolConfig.poolName] = connPool;
|
||||||
}
|
}
|
||||||
|
this.inited = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
get pool() {
|
get pool() {
|
||||||
@@ -46,6 +57,4 @@ class ConnManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const connManager = new ConnManager();
|
module.exports = ConnManager;
|
||||||
|
|
||||||
module.exports = connManager;
|
|
||||||
@@ -11,7 +11,7 @@ const path = require('path');
|
|||||||
const express = require('express');
|
const express = require('express');
|
||||||
const compression = require('compression');
|
const compression = require('compression');
|
||||||
|
|
||||||
const connManager = require('./db/connManager');
|
const connManager = new(require('./db/ConnManager'))();//singleton
|
||||||
|
|
||||||
async function init() {
|
async function init() {
|
||||||
await fs.ensureDir(config.dataDir);
|
await fs.ensureDir(config.dataDir);
|
||||||
|
|||||||
Reference in New Issue
Block a user