Преглед на файлове

Added migration script for User.emails (#639)

Miguel Serrano преди 7 години
родител
ревизия
2576675662
променени са 1 файла, в които са добавени 49 реда и са изтрити 0 реда
  1. 49 0
      migrations/9_create_user_emails_array.js

+ 49 - 0
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)
+}