From 81089a557dc9ef735cd24a67b7f45140ad64bcff Mon Sep 17 00:00:00 2001 From: Michal Orlik Date: Sat, 7 Apr 2018 02:45:18 +0200 Subject: [PATCH] tools/migrate: Fix migration errors Possibly fixed unique violation and _id function error --- libs/databases/database.js | 4 ++-- libs/databases/nedb.js | 32 +++++++++++++++++--------------- tools/migrate.js | 10 ++++------ 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/libs/databases/database.js b/libs/databases/database.js index 4979e52e774..b0789a0e796 100644 --- a/libs/databases/database.js +++ b/libs/databases/database.js @@ -8,10 +8,10 @@ const IMasterController = require('./master') class Database { constructor (cluster) { - cluster = _.isNil(cluster) ? true : cluster + this.cluster = _.isNil(cluster) ? true : cluster this.engine = null - if (require('cluster').isMaster && cluster) this.engine = new IMasterController() + if (require('cluster').isMaster && this.cluster) this.engine = new IMasterController() else if (config.database.type === 'nedb') this.engine = new INeDB() else if (config.database.type === 'mongodb') this.engine = new IMongoDB() diff --git a/libs/databases/nedb.js b/libs/databases/nedb.js index b490ee403c5..fbcfea30ced 100644 --- a/libs/databases/nedb.js +++ b/libs/databases/nedb.js @@ -28,21 +28,23 @@ class INeDB extends Interface { this.table[table].persistence.setAutocompactionInterval(60000) // create indexes - switch (table) { - case 'users.bits': - case 'users.tips': - case 'api.stats': - this.table[table].ensureIndex({fieldName: 'timestamp'}) - break - case 'users': - this.table[table].ensureIndex({fieldName: 'username', unique: true}) - break - case 'cache': - this.table[table].ensureIndex({fieldName: 'key'}) - break - case 'stats': - this.table[table].ensureIndex({fieldName: 'whenOnline'}) - break + if (this.cluster) { + switch (table) { + case 'users.bits': + case 'users.tips': + case 'api.stats': + this.table[table].ensureIndex({fieldName: 'timestamp'}) + break + case 'users': + this.table[table].ensureIndex({fieldName: 'username', unique: true}) + break + case 'cache': + this.table[table].ensureIndex({fieldName: 'key'}) + break + case 'stats': + this.table[table].ensureIndex({fieldName: 'whenOnline'}) + break + } } } return this.table[table] diff --git a/tools/migrate.js b/tools/migrate.js index 33a7c9c6e08..9761c8dcfac 100644 --- a/tools/migrate.js +++ b/tools/migrate.js @@ -94,13 +94,11 @@ let migration = { let users = await global.db.engine.find('users') for (let user of users) { if (!_.has(user, 'stats.bits') || _.isNil(user.stats.bits)) continue // skip if bits are null/undefined - await Promise.all([ - global.db.engine.remove('users', { _id: user._id.toString() }), - global.db.engine.insert('users.bits', { username: user.username, amount: user.stats.bits, message: 'Migrated from 6.x', timestamp: _.now() }) - ]) + await global.db.engine.remove('users', { username: user.username }) + await global.db.engine.insert('users.bits', { username: user.username, amount: user.stats.bits, message: 'Migrated from 6.x', timestamp: _.now() }) delete user.stats.bits - delete user._id`` - await global.db.engine.insert('users', user) + delete user._id + await global.db.engine.update('users', { username: user.username }, user) } } }]