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

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 ReaderWorker = require('../core/ReaderWorker');
const readerStorage = require('../core/readerStorage');
const ReaderWorker = require('../core/ReaderWorker');//singleton
const ReaderStorage = require('../core/ReaderStorage');//singleton
const WorkerState = require('../core/WorkerState');//singleton
class ReaderController extends BaseController {
constructor(config) {
super(config);
this.readerStorage = new ReaderStorage();
this.readerWorker = new ReaderWorker(config);
this.workerState = new WorkerState();
}
@@ -39,7 +40,7 @@ class ReaderController extends BaseController {
if (!request.items || Array.isArray(request.data))
throw new Error(`key 'items' is empty`);
return await readerStorage.doAction(request);
return await this.readerStorage.doAction(request);
} catch (e) {
error = e.message;
}

View File

@@ -1,12 +1,22 @@
const SQL = require('sql-template-strings');
const _ = require('lodash');
const connManager = require('../db/connManager');
const ConnManager = require('../db/ConnManager');//singleton
let instance = null;
//singleton
class ReaderStorage {
constructor() {
this.storagePool = connManager.pool.readerStorage;
if (!instance) {
this.connManager = new ConnManager();
this.storagePool = this.connManager.pool.readerStorage;
this.periodicCleanCache(3*3600*1000);//1 раз в 3 часа
instance = this;
}
return instance;
}
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'),
};
let instance = null;
//singleton
class ConnManager {
constructor() {
this._pool = {};
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);
@@ -39,6 +49,7 @@ class ConnManager {
this._pool[poolConfig.poolName] = connPool;
}
this.inited = true;
}
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 compression = require('compression');
const connManager = require('./db/connManager');
const connManager = new(require('./db/ConnManager'))();//singleton
async function init() {
await fs.ensureDir(config.dataDir);