Browse Source

Merge pull request #1847 from overleaf/spd-cleanup-userstubs

Add user-stub cleanup script

GitOrigin-RevId: 3a1dab4aeec74fe5d42732db52737d880a86002e
Jessica Lawshe 7 years ago
parent
commit
f0e39f7a86
1 changed files with 82 additions and 0 deletions
  1. 82 0
      services/web/scripts/cleanup_dangling_user_stubs.js

+ 82 - 0
services/web/scripts/cleanup_dangling_user_stubs.js

@@ -0,0 +1,82 @@
+const { db } = require('../app/src/infrastructure/mongojs')
+const async = require('async')
+const minimist = require('minimist')
+const UserMapper = require('../modules/overleaf-integration/app/src/OverleafUsers/UserMapper')
+
+const argv = minimist(process.argv.slice(2))
+const commit = argv.commit !== undefined
+
+if (!commit) {
+  console.log('Doing dry run without --commit')
+}
+
+db.userstubs.aggregate(
+  [
+    {
+      $lookup: {
+        localField: 'overleaf.id',
+        from: 'users',
+        foreignField: 'overleaf.id',
+        as: 'users'
+      }
+    },
+    {
+      $project: {
+        email: 1,
+        overleaf: 1,
+        _id: 1,
+        'users.email': 1,
+        'users.emails': 1,
+        'users.overleaf': 1,
+        'users._id': 1
+      }
+    },
+    {
+      $match: {
+        users: { $exists: 1 },
+        'overleaf.id': { $exists: 1 }
+      }
+    }
+  ],
+  (err, stubs) => {
+    if (err) {
+      throw err
+    }
+    console.log('Found ' + stubs.length + ' dangling stubs')
+    async.mapLimit(
+      stubs,
+      Number(argv.limit || '10'),
+      (stub, callback) => {
+        if (commit) {
+          console.log(
+            'Processing stub',
+            stub._id,
+            'for user',
+            stub.users[0]._id
+          )
+          UserMapper._updateUserStubReferences(
+            stub.overleaf,
+            stub._id,
+            stub.users[0]._id,
+            callback
+          )
+        } else {
+          console.log(
+            'Would call UserMapper._updateUserStubReferences with:',
+            stub.overleaf,
+            stub._id,
+            stub.users[0]._id
+          )
+          callback()
+        }
+      },
+      err => {
+        if (err) {
+          throw err
+        }
+        console.log('All done')
+        process.exit(0)
+      }
+    )
+  }
+)