| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- 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) {
- if (stub.users.length === 0) {
- console.log('Deleting stub without users:', stub._id)
- return db.userstubs.remove({ _id: stub._id }, callback)
- }
- if (stub.users.length > 1) {
- console.log('Found stub with multiple users:', stub)
- return callback()
- }
- console.log(
- 'Processing stub',
- stub._id,
- 'for user',
- stub.users[0]._id
- )
- UserMapper._updateUserStubReferences(
- stub.overleaf,
- stub._id,
- stub.users[0]._id,
- callback
- )
- } else {
- if (stub.users.length === 0) {
- console.log('Would delete stub without users:', stub._id)
- return callback()
- }
- if (stub.users.length > 1) {
- console.log('Found stub with multiple users:', stub)
- return callback()
- }
- 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)
- }
- )
- }
- )
|