| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 | 
							- const _ = require('lodash')
 
- const cfgHelper = require('../helpers/config')
 
- const fs = require('fs')
 
- const path = require('path')
 
- const yaml = require('js-yaml')
 
- /* global wiki */
 
- module.exports = {
 
-   /**
 
-    * Load root config from disk
 
-    */
 
-   init() {
 
-     let confPaths = {
 
-       config: path.join(wiki.ROOTPATH, 'config.yml'),
 
-       data: path.join(wiki.SERVERPATH, 'app/data.yml'),
 
-       dataRegex: path.join(wiki.SERVERPATH, 'app/regex.js')
 
-     }
 
-     let appconfig = {}
 
-     let appdata = {}
 
-     try {
 
-       appconfig = yaml.safeLoad(
 
-         cfgHelper.parseConfigValue(
 
-           fs.readFileSync(confPaths.config, 'utf8')
 
-         )
 
-       )
 
-       appdata = yaml.safeLoad(fs.readFileSync(confPaths.data, 'utf8'))
 
-       appdata.regex = require(confPaths.dataRegex)
 
-     } catch (ex) {
 
-       console.error(ex)
 
-       process.exit(1)
 
-     }
 
-     // Merge with defaults
 
-     appconfig = _.defaultsDeep(appconfig, appdata.defaults.config)
 
-     if (appconfig.port < 1) {
 
-       appconfig.port = process.env.PORT || 80
 
-     }
 
-     appconfig.public = (appconfig.public === true || _.toLower(appconfig.public) === 'true')
 
-     wiki.config = appconfig
 
-     wiki.data = appdata
 
-     wiki.version = require(path.join(wiki.ROOTPATH, 'package.json')).version
 
-   },
 
-   /**
 
-    * Load config from DB
 
-    *
 
-    * @param {Array} subsets Array of subsets to load
 
-    * @returns Promise
 
-    */
 
-   async loadFromDb(subsets) {
 
-     if (!_.isArray(subsets) || subsets.length === 0) {
 
-       subsets = wiki.data.configNamespaces
 
-     }
 
-     let results = await wiki.db.Setting.findAll({
 
-       attributes: ['key', 'config'],
 
-       where: {
 
-         key: {
 
-           $in: subsets
 
-         }
 
-       }
 
-     })
 
-     if (_.isArray(results) && results.length === subsets.length) {
 
-       results.forEach(result => {
 
-         wiki.config[result.key] = result.config
 
-       })
 
-       return true
 
-     } else {
 
-       wiki.logger.warn('DB Configuration is empty or incomplete.')
 
-       return false
 
-     }
 
-   },
 
-   /**
 
-    * Save config to DB
 
-    *
 
-    * @param {Array} subsets Array of subsets to save
 
-    * @returns Promise
 
-    */
 
-   async saveToDb(subsets) {
 
-     if (!_.isArray(subsets) || subsets.length === 0) {
 
-       subsets = wiki.data.configNamespaces
 
-     }
 
-     try {
 
-       for (let set of subsets) {
 
-         await wiki.db.Setting.upsert({
 
-           key: set,
 
-           config: _.get(wiki.config, set, {})
 
-         })
 
-       }
 
-     } catch (err) {
 
-       wiki.logger.error(`Failed to save configuration to DB: ${err.message}`)
 
-       return false
 
-     }
 
-     return true
 
-   }
 
- }
 
 
  |