Commit 4a7ed5bd6b8d31c41a98369a72289530376d1bdf

Authored by Adhidarma Hadiwinoto
1 parent d5dfe4ff42
Exists in master

Add config-save on api-server

Showing 1 changed file with 65 additions and 0 deletions Inline Diff

api-server/config-save.js
File was created 1 const MODULE_NAME = 'KOMODO-SDK.API-SERVER.CONFIG-SAVE';
2
3 const fs = require('fs');
4 const logger = require('tektrans-logger');
5 const moment = require('moment');
6 const config = require('../config');
7 const matrix = require('../matrix');
8
9 if (!fs.existsSync('config-backup')) fs.mkdirSync('config-backup');
10
11 const backup = async (xid) => {
12 try {
13 const backupFilename = `config-backup/config_${moment().format('YYYYMMDD_HHmmss.SS')}.json`;
14 await fs.promises.copyFile('config.json', backupFilename);
15 logger.verbose(`${MODULE_NAME} 88213811: Backup saved`, {
16 xid,
17 backupFilename,
18 });
19
20 return backupFilename;
21 } catch (e) {
22 const newE = new Error(`${MODULE_NAME} 0257A553: Exception on backup`);
23 newE.code = 'E_BACKUP_CONFIG';
24
25 logger.warn(newE.message, {
26 xid,
27 eCode: e.code,
28 eMessage: e.message || e,
29 });
30
31 throw newE;
32 }
33 };
34
35 module.exports = async (xid) => {
36 try {
37 if (!matrix.config_is_dirty) {
38 logger.verbose(`${MODULE_NAME} 4B263CB4: No need to save because config is not dirty`, { xid });
39 return;
40 }
41
42 const backupFilename = await backup(xid);
43
44 await fs.promises.writeFile(
45 'config.json',
46 `${JSON.stringify(config, null, 2)}\n`,
47 { mode: 0o640 },
48 );
49
50 matrix.config_is_dirty = false;
51
52 logger.verbose(`${MODULE_NAME} DE655EEF: Config saved`, { xid, backupFilename });
53 } catch (e) {
54 const newE = new Error(`${MODULE_NAME} CD9C1BE1: Exception on saving config file`);
55 newE.code = 'E_SAVE_CONFIG';
56
57 logger.warn(newE.message, {
58 xid,
59 eCode: e.code,
60 eMessage: e.message || e,
61 });
62
63 throw newE;
64 }
65 };
66