|
|
@@ -11,7 +11,7 @@ const debug = require('debug')('growi:models:config');
|
|
|
* - PASSWORD_SEED
|
|
|
* - SECRET_TOKEN
|
|
|
*/
|
|
|
-const ENV_VAR_NAME_TO_KEY_MAP = {
|
|
|
+const ENV_VAR_NAME_TO_CONFIG_KEY_MAP = {
|
|
|
/*
|
|
|
* The commented out item has not yet entered the migration work.
|
|
|
* So, key names of these are under consideration.
|
|
|
@@ -41,8 +41,18 @@ class ConfigLoader {
|
|
|
}
|
|
|
|
|
|
async load() {
|
|
|
- await this.integrateEnvVars();
|
|
|
+ const configFromDB = this.loadFromDB();
|
|
|
+ const configFromEnvVars = this.loadFromEnvVars();
|
|
|
|
|
|
+ this.configModel.setupConfigFormData('crowi', configFromDB);
|
|
|
+
|
|
|
+ return {
|
|
|
+ fromDB: configFromDB,
|
|
|
+ fromEnvVars: configFromEnvVars
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ async loadFromDB() {
|
|
|
const config = {};
|
|
|
const docs = await this.configModel.find().exec();
|
|
|
|
|
|
@@ -52,28 +62,16 @@ class ConfigLoader {
|
|
|
}
|
|
|
config[doc.ns][doc.key] = JSON.parse(doc.value);
|
|
|
}
|
|
|
-
|
|
|
- this.configModel.setupConfigFormData('crowi', config);
|
|
|
-
|
|
|
return config;
|
|
|
}
|
|
|
|
|
|
- async integrateEnvVars() {
|
|
|
- for (const ENV_VAR_NAME of Object.keys(ENV_VAR_NAME_TO_KEY_MAP)) {
|
|
|
- try {
|
|
|
- await this.configModel.findOneAndUpdate(
|
|
|
- {ns: 'crowi', key: ENV_VAR_NAME_TO_KEY_MAP[ENV_VAR_NAME]},
|
|
|
- {ns: 'crowi', key: ENV_VAR_NAME_TO_KEY_MAP[ENV_VAR_NAME], value: JSON.stringify(process.env[ENV_VAR_NAME]), from_env: true},
|
|
|
- {upsert: true},
|
|
|
- (err, config) => {
|
|
|
- debug('Config.findAndUpdate', err, config);
|
|
|
- }
|
|
|
- );
|
|
|
- }
|
|
|
- catch (e) {
|
|
|
- debug('Config.findAndUpdate', e);
|
|
|
- }
|
|
|
+ loadFromEnvVars() {
|
|
|
+ const config = {};
|
|
|
+ config.crowi = {};
|
|
|
+ for (const ENV_VAR_NAME of Object.keys(ENV_VAR_NAME_TO_CONFIG_KEY_MAP)) {
|
|
|
+ config.crowi[ENV_VAR_NAME_TO_CONFIG_KEY_MAP[ENV_VAR_NAME]] = process.env[ENV_VAR_NAME];
|
|
|
}
|
|
|
+ return config;
|
|
|
}
|
|
|
}
|
|
|
|