Update migration script for holding accounts to migrate group invites

This commit is contained in:
James Allen 2017-06-14 17:03:05 +01:00
parent 48e4f32745
commit 8090e5fca1

View file

@ -1,7 +1,7 @@
Settings = require "settings-sharelatex" Settings = require "settings-sharelatex"
mongojs = require("mongojs") mongojs = require("mongojs")
ObjectId = mongojs.ObjectId ObjectId = mongojs.ObjectId
db = mongojs(Settings.mongo.url, ['users', 'projects']) db = mongojs(Settings.mongo.url, ['users', 'projects', 'subscriptions'])
async = require "async" async = require "async"
module.exports = HoldingAccountMigration = module.exports = HoldingAccountMigration =
@ -59,6 +59,21 @@ module.exports = HoldingAccountMigration =
console.log "[Would have removed user]", user_id console.log "[Would have removed user]", user_id
callback() 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 = () ->) -> run: (done = () ->) ->
console.log "[Getting list of holding accounts]" console.log "[Getting list of holding accounts]"
HoldingAccountMigration.findHoldingAccounts (error, users) -> HoldingAccountMigration.findHoldingAccounts (error, users) ->
@ -68,11 +83,13 @@ module.exports = HoldingAccountMigration =
jobs = users.map (u) -> jobs = users.map (u) ->
(cb) -> (cb) ->
console.log "[Removing user #{i++}/#{users.length}]" console.log "[Removing user #{i++}/#{users.length}]"
HoldingAccountMigration.deleteUser u._id, (error) -> HoldingAccountMigration.migrateGroupInvites u._id, u.email, (error) ->
return cb(error) if error? return cb(error) if error?
HoldingAccountMigration.deleteUserProjects u._id, (error) -> HoldingAccountMigration.deleteUser u._id, (error) ->
return cb(error) if 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) -> async.series jobs, (error) ->
throw error if error? throw error if error?
console.log "[FINISHED]" console.log "[FINISHED]"