mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-30 05:05:27 -05:00
4b0a445337
Handle user stubs with no user in cleanup script GitOrigin-RevId: 810134f0876bc595f2d749921929b52dae4e7958
98 lines
2.4 KiB
JavaScript
98 lines
2.4 KiB
JavaScript
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)
|
|
}
|
|
)
|
|
}
|
|
)
|