Commit 4a7ed5bd6b8d31c41a98369a72289530376d1bdf
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 |