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