From bd48afa684ad6c4154b6da2e74ed4fa8ecc029cc Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 6 May 2024 14:12:33 +0200 Subject: [PATCH] feat: listener to restart --- lib/salix.js | 44 +++++++++++++++++++++++++++----------------- mylogger.js | 6 ++++-- 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/lib/salix.js b/lib/salix.js index fedaa98..25b0624 100644 --- a/lib/salix.js +++ b/lib/salix.js @@ -1,16 +1,16 @@ const fs = require("fs"); const path = require("path"); const SALIX_VERSION_HEADER = "Salix-version"; -const CONFIG_FILENAME = '/config/salix.local.yml'; +const CONFIG_FILENAME = "/config/salix.local.yml"; const i18n = { versionChanged: "La versión ha cambiado", deprecatedVersion: "La configuracion guardada está desactualizada", noDeprecatedVersion: "La configuración guardada no requiere actualización", - erroFs:{ - noExists: 'El archivo no existe', - noWrite: 'Error al escribir el archivo YAML:', - noRead: 'Error al leer el archivo YAML:' - } + erroFs: { + noExists: "El archivo no existe", + noWrite: "Error al escribir el archivo YAML:", + noRead: "Error al leer el archivo YAML:", + }, }; module.exports = class Salix { constructor() { @@ -19,6 +19,10 @@ module.exports = class Salix { this._salixVersion = null; this._salixConfig = null; } + fooListener(val) {} + registerNewListener(externalListenerFunction) { + this.fooListener = externalListenerFunction; + } async init(logger) { this.conf = logger.conf; const salixFileConfig = await this.loadConfig(); @@ -29,11 +33,10 @@ module.exports = class Salix { this._salixConfig = salixFileConfig; //Obtengo la version await this.getSalixVersion(false); - this._salixVersion && this.handleVersion(salixFileConfig); + this.salixVersion && this.handleVersion(salixFileConfig); this._logInfo = salixFileConfig.log; } - } catch (error) { - } + } catch (error) {} setInterval( () => this.getSalixVersion(), @@ -52,7 +55,7 @@ module.exports = class Salix { return Object.assign({}, contenidoYAML); } } catch (error) { - if (error.code === "ENOENT") { + if (error.code === "ENOENT") { console.error(i18n.erroFs.noExists); } else { console.error(i18n.erroFs.noRead, error); @@ -63,7 +66,7 @@ module.exports = class Salix { async saveConfig(configValue) { const defaultConfig = { - salixVersion: this._salixVersion, + salixVersion: this.salixVersion, }; try { const contenidoYAML = fs.writeFileSync( @@ -90,7 +93,7 @@ module.exports = class Salix { async handleVersion(salixFileConfig) { const isDeprecated = this.compareVersion( - this._salixVersion, + this.salixVersion, salixFileConfig.salixVersion ); isDeprecated && (await this.salixLogInfo()); @@ -106,6 +109,7 @@ module.exports = class Salix { i18n.deprecatedVersion ); deprecatedConfig = true; + break; } else if (version1[i] < version2[i]) { console.log( // `La versión ${v1} es menor que la versión ${v2}` @@ -128,17 +132,18 @@ module.exports = class Salix { throw new Error(response.error.message); } const newVersion = salixCall.headers.get(SALIX_VERSION_HEADER); - if (this._salixVersion) { + if(!this.salixVersion) this.salixVersion = newVersion; + if (this.salixVersion!==newVersion) { const isDeprecated = this.compareVersion( - this._salixVersion, - newVersion + newVersion, + this.salixVersion ); if (isDeprecated) { - this._salixVersion = newVersion; + this.salixVersion = newVersion; console.info(i18n.versionChanged); await this.salixLogInfo(); } - } else this._salixVersion = newVersion; + } return response; } catch ({ message }) { console.error(message); @@ -174,4 +179,9 @@ module.exports = class Salix { get salixVersion() { return this._salixVersion; } + set salixVersion(newVersion) { + if(this._salixVersion) this.fooListener(newVersion); + + this._salixVersion = newVersion; + } }; diff --git a/mylogger.js b/mylogger.js index 76823ae..4f0381b 100644 --- a/mylogger.js +++ b/mylogger.js @@ -22,12 +22,14 @@ module.exports = class MyLogger { async start() { const conf = (this.conf = loadConfig(__dirname, 'config')); const salix = new Salix(); + salix.registerNewListener(() => { + this.stop(); + this.start(); + }); await salix.init(this); // await salix.salixLogInfo(); - // salix.registerNewListener((val) => console.log(`New Value: ${val}`)); this.modelLoader.init(this, salix.logInfo); this.showDb.init(this); - const includeSchema = {}; for (const [schemaName, tableMap] of this.schemaMap.map) includeSchema[schemaName] = Array.from(tableMap.keys());