From c33e91d5d0785be455ca8e6b2f9d34b4c8fbeae5 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Tue, 29 Oct 2019 14:37:05 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D0=BD=D0=B3,=20=D0=BF=D1=80=D0=B5=D0=BE=D0=B1?= =?UTF-8?q?=D1=80=D0=B0=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BA?= =?UTF-8?q?=D0=BB=D0=B0=D1=81=D1=81=D0=BE=D0=B2=20=D0=B2=20=D1=81=D0=B8?= =?UTF-8?q?=D0=BD=D0=B3=D0=BB=D1=82=D0=BE=D0=BD=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/controllers/ReaderController.js | 7 ++++--- .../{readerStorage.js => ReaderStorage.js} | 20 +++++++++++++------ server/db/{connManager.js => ConnManager.js} | 17 ++++++++++++---- server/index.js | 2 +- 4 files changed, 32 insertions(+), 14 deletions(-) rename server/core/{readerStorage.js => ReaderStorage.js} (89%) rename server/db/{connManager.js => ConnManager.js} (87%) diff --git a/server/controllers/ReaderController.js b/server/controllers/ReaderController.js index c388bf8c..3d64e9a2 100644 --- a/server/controllers/ReaderController.js +++ b/server/controllers/ReaderController.js @@ -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; } diff --git a/server/core/readerStorage.js b/server/core/ReaderStorage.js similarity index 89% rename from server/core/readerStorage.js rename to server/core/ReaderStorage.js index adb88870..d6e817b9 100644 --- a/server/core/readerStorage.js +++ b/server/core/ReaderStorage.js @@ -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; - this.periodicCleanCache(3*3600*1000);//1 раз в 3 часа + 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; \ No newline at end of file +module.exports = ReaderStorage; \ No newline at end of file diff --git a/server/db/connManager.js b/server/db/ConnManager.js similarity index 87% rename from server/db/connManager.js rename to server/db/ConnManager.js index ec09c204..5576fa47 100644 --- a/server/db/connManager.js +++ b/server/db/ConnManager.js @@ -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; \ No newline at end of file +module.exports = ConnManager; \ No newline at end of file diff --git a/server/index.js b/server/index.js index 9f51979d..afb6f188 100644 --- a/server/index.js +++ b/server/index.js @@ -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);