Рефакторинг, преобразование классов в синглтоны

This commit is contained in:
Book Pauk
2019-10-29 14:37:05 +07:00
parent ca65ef3cb7
commit c33e91d5d0
4 changed files with 32 additions and 14 deletions

View File

@@ -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;
} }

View File

@@ -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;

View File

@@ -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;

View File

@@ -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);