123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- const _ = require('lodash')
- const cfgHelper = require('../helpers/config')
- const Promise = require('bluebird')
- const fs = require('fs-extra')
- const path = require('path')
- /* global WIKI */
- module.exports = {
- updates: {
- channel: 'BETA',
- version: WIKI.version,
- releaseDate: WIKI.releaseDate,
- minimumVersionRequired: '2.0.0-beta.0',
- minimumNodeRequired: '10.12.0'
- },
- init() {
- // Clear content cache
- fs.emptyDir(path.join(WIKI.ROOTPATH, 'data/cache'))
- return this
- },
- /**
- * Upgrade from WIKI.js 1.x - MongoDB database
- *
- * @param {Object} opts Options object
- */
- async upgradeFromMongo (opts) {
- 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.models.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()
- })
- })
- }
- }
|