overleaf/server-ce/migrations/9_create_user_emails_array.js

50 lines
1.1 KiB
JavaScript
Raw Normal View History

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 ${users.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)
}