From 4a7ed5bd6b8d31c41a98369a72289530376d1bdf Mon Sep 17 00:00:00 2001 From: Adhidarma Hadiwinoto <adhisimon@gmail.com> Date: Wed, 23 Mar 2022 15:55:56 +0700 Subject: [PATCH] Add config-save on api-server --- api-server/config-save.js | 65 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 api-server/config-save.js diff --git a/api-server/config-save.js b/api-server/config-save.js new file mode 100644 index 0000000..db27723 --- /dev/null +++ b/api-server/config-save.js @@ -0,0 +1,65 @@ +const MODULE_NAME = 'KOMODO-SDK.API-SERVER.CONFIG-SAVE'; + +const fs = require('fs'); +const logger = require('tektrans-logger'); +const moment = require('moment'); +const config = require('../config'); +const matrix = require('../matrix'); + +if (!fs.existsSync('config-backup')) fs.mkdirSync('config-backup'); + +const backup = async (xid) => { + try { + const backupFilename = `config-backup/config_${moment().format('YYYYMMDD_HHmmss.SS')}.json`; + await fs.promises.copyFile('config.json', backupFilename); + logger.verbose(`${MODULE_NAME} 88213811: Backup saved`, { + xid, + backupFilename, + }); + + return backupFilename; + } catch (e) { + const newE = new Error(`${MODULE_NAME} 0257A553: Exception on backup`); + newE.code = 'E_BACKUP_CONFIG'; + + logger.warn(newE.message, { + xid, + eCode: e.code, + eMessage: e.message || e, + }); + + throw newE; + } +}; + +module.exports = async (xid) => { + try { + if (!matrix.config_is_dirty) { + logger.verbose(`${MODULE_NAME} 4B263CB4: No need to save because config is not dirty`, { xid }); + return; + } + + const backupFilename = await backup(xid); + + await fs.promises.writeFile( + 'config.json', + `${JSON.stringify(config, null, 2)}\n`, + { mode: 0o640 }, + ); + + matrix.config_is_dirty = false; + + logger.verbose(`${MODULE_NAME} DE655EEF: Config saved`, { xid, backupFilename }); + } catch (e) { + const newE = new Error(`${MODULE_NAME} CD9C1BE1: Exception on saving config file`); + newE.code = 'E_SAVE_CONFIG'; + + logger.warn(newE.message, { + xid, + eCode: e.code, + eMessage: e.message || e, + }); + + throw newE; + } +}; -- 1.9.0