Added migration script for User.emails (#639)

This commit is contained in:
Miguel Serrano 2019-09-13 13:57:37 +02:00 committed by GitHub
parent bff8cf75e5
commit 0da28dd924

View file

@ -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)
}