| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | const _ = require('lodash')const cfgHelper = require('../helpers/config')const Promise = require('bluebird')/* global WIKI */module.exports = {  /**   * Upgrade from WIKI.js 1.x - MongoDB database   *   * @param {Object} opts Options object   */  async upgradeFromMongo (opts) {    WIKI.telemetry.sendEvent('setup', 'upgradeFromMongo')    WIKI.logger.info('Upgrading from MongoDB...')    let mongo = require('mongodb').MongoClient    let parsedMongoConStr = cfgHelper.parseConfigValue(opts.mongoCnStr)    return new Promise((resolve, reject) => {      // Connect to MongoDB      mongo.connect(parsedMongoConStr, {        autoReconnect: false,        reconnectTries: 2,        reconnectInterval: 1000,        connectTimeoutMS: 5000,        socketTimeoutMS: 5000      }, async (err, db) => {        try {          if (err !== null) { throw err }          let users = db.collection('users')          // Check if users table is populated          let userCount = await users.count()          if (userCount < 2) {            throw new Error('MongoDB Upgrade: Users table is empty!')          }          // Import all users          let userData = await users.find({            email: {              $not: 'guest'            }          }).toArray()          await WIKI.db.User.bulkCreate(_.map(userData, usr => {            return {              email: usr.email,              name: usr.name || 'Imported User',              password: usr.password || '',              provider: usr.provider || 'local',              providerId: usr.providerId || '',              role: 'user',              createdAt: usr.createdAt            }          }))          resolve(true)        } catch (err) {          reject(err)        }        db.close()      })    })  }}
 |