| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- const { waitForDb } = require('../app/src/infrastructure/mongodb')
- const { User } = require('../app/src/models/User')
- const UserController = require('../app/src/Features/User/UserController')
- require('@overleaf/logger').logger.level('error')
- const pLimit = require('p-limit')
- const CONCURRENCY = 10
- const failure = []
- const success = []
- console.log('Starting ensure affiliations')
- const query = {
- 'emails.affiliationUnchecked': true,
- }
- async function _handleEnsureAffiliation(user) {
- try {
- await UserController.promises.ensureAffiliation(user)
- console.log(`✔ ${user._id}`)
- success.push(user._id)
- } catch (error) {
- failure.push(user._id)
- console.log(`ERROR: ${user._id}`, error)
- }
- }
- async function getUsers() {
- return User.find(query, { emails: 1 }).exec()
- }
- async function run() {
- const limit = pLimit(CONCURRENCY)
- const users = await getUsers()
- console.log(`Found ${users.length} users`)
- await Promise.all(
- users.map(user => limit(() => _handleEnsureAffiliation(user)))
- )
- console.log(`${success.length} successes`)
- console.log(`${failure.length} failures`)
- if (failure.length > 0) {
- console.log('Failed to update:', failure)
- }
- }
- waitForDb()
- .then(run)
- .then(() => {
- process.exit()
- })
- .catch(error => {
- console.log(error)
- process.exit(1)
- })
|