From 7ef02127a137be142efe658b45c711acf4a90fc7 Mon Sep 17 00:00:00 2001 From: James Allen Date: Wed, 14 Jun 2017 17:03:05 +0100 Subject: [PATCH] Update migration script for holding accounts to migrate group invites --- migrations/5_remove_holding_accounts.coffee | 25 +++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/migrations/5_remove_holding_accounts.coffee b/migrations/5_remove_holding_accounts.coffee index 494669859d..ee796b3023 100644 --- a/migrations/5_remove_holding_accounts.coffee +++ b/migrations/5_remove_holding_accounts.coffee @@ -1,7 +1,7 @@ Settings = require "settings-sharelatex" mongojs = require("mongojs") ObjectId = mongojs.ObjectId -db = mongojs(Settings.mongo.url, ['users', 'projects']) +db = mongojs(Settings.mongo.url, ['users', 'projects', 'subscriptions']) async = require "async" module.exports = HoldingAccountMigration = @@ -58,6 +58,21 @@ module.exports = HoldingAccountMigration = else console.log "[Would have removed user]", user_id callback() + + migrateGroupInvites: (user_id, email, callback = (error) ->) -> + if !user_id? + throw new Error("must have user_id") + if !HoldingAccountMigration.DRY_RUN + db.subscriptions.update {member_ids: user_id}, { + $pull: { member_ids: user_id }, + $addToSet : { invited_emails: email } + }, { multi : true }, (error, result) -> + return callback(error) if error? + console.log "[Migrated user in group accounts]", user_id, email, result + callback() + else + console.log "[Would have migrated user in group accounts]", user_id, email + callback() run: (done = () ->) -> console.log "[Getting list of holding accounts]" @@ -68,11 +83,13 @@ module.exports = HoldingAccountMigration = jobs = users.map (u) -> (cb) -> console.log "[Removing user #{i++}/#{users.length}]" - HoldingAccountMigration.deleteUser u._id, (error) -> + HoldingAccountMigration.migrateGroupInvites u._id, u.email, (error) -> return cb(error) if error? - HoldingAccountMigration.deleteUserProjects u._id, (error) -> + HoldingAccountMigration.deleteUser u._id, (error) -> return cb(error) if error? - setTimeout cb, 50 # Small delay to not hammer DB + HoldingAccountMigration.deleteUserProjects u._id, (error) -> + return cb(error) if error? + setTimeout cb, 50 # Small delay to not hammer DB async.series jobs, (error) -> throw error if error? console.log "[FINISHED]"