From 2576675662b610275ebe7073d15d44c39e3fc1c9 Mon Sep 17 00:00:00 2001 From: Miguel Serrano Date: Fri, 13 Sep 2019 13:57:37 +0200 Subject: [PATCH] Added migration script for User.emails (#639) --- migrations/9_create_user_emails_array.js | 49 ++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 migrations/9_create_user_emails_array.js diff --git a/migrations/9_create_user_emails_array.js b/migrations/9_create_user_emails_array.js new file mode 100644 index 0000000000..08e9fb06f6 --- /dev/null +++ b/migrations/9_create_user_emails_array.js @@ -0,0 +1,49 @@ +const Settings = require('settings-sharelatex') +const mongojs = require('mongojs') +const db = mongojs(Settings.mongo.url, ['users']) +const async = require('async') + +const handleExit = () => console.log('Got signal. Shutting down.') +process.on('SIGINT', handleExit) +process.on('SIGHUP', handleExit) + +const initUserEmailsAttribute = (user, callback) => { + const update = { + $set: { + emails: [ + { + email: user.email, + createdAt: new Date() + } + ] + } + } + db.users.update({ _id: user._id }, update, callback) +} + +const updateAllUsersEmailsAttribute = (users, callback) => { + console.log(`updating ${user.length} users`) + async.eachSeries(users, initUserEmailsAttribute, callback) +} + +exports.migrate = (client, done) => + db.users.find( + { emails: { $exists: false } }, + { email: 1 }, + (error, users) => { + if (error) { + callback(error) + } else { + updateAllUsersEmailsAttribute(users, done) + } + } + ) + +exports.rollback = (client, done) => { + const update = { + $unset: { + emails: 1 + } + } + db.users.update({ emails: { $exists: true } }, update, done) +}