浏览代码

Merge pull request #541 from sharelatex/ja-update-holding-accounts-migration-for-groups

Update migration script for holding accounts to migrate group invites
James Allen 9 年之前
父节点
当前提交
996399cc2e
共有 1 个文件被更改,包括 21 次插入4 次删除
  1. 21 4
      migrations/5_remove_holding_accounts.coffee

+ 21 - 4
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]"