| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- import {
- db,
- READ_PREFERENCE_SECONDARY,
- } from '../app/src/infrastructure/mongodb.js'
- import parseArgs from 'minimist'
- async function _removeFeatureFromAllUsers(feature, commit) {
- let removals = 0
- const query = {}
- query[`features.${feature}`] = true
- const usersWithFeature = db.users.find(query, {
- readPreference: READ_PREFERENCE_SECONDARY,
- })
- const update = {}
- update[`features.${feature}`] = false
- while (await usersWithFeature.hasNext()) {
- const user = await usersWithFeature.next()
- if (commit) {
- await db.users.findOneAndUpdate({ _id: user._id }, { $set: update })
- }
- removals++
- }
- console.log(`removed ${feature} from ${removals} users`)
- if (!commit) {
- console.log(
- 'this was a dry run, pass --commit to remove features from users'
- )
- }
- }
- async function main() {
- const argv = parseArgs(process.argv.slice(2), {
- string: ['feature'],
- boolean: ['commit'],
- unknown: function (arg) {
- console.error('unrecognised argument', arg)
- process.exit(1)
- },
- })
- const feature = argv.feature
- const commit = argv.commit || false
- await _removeFeatureFromAllUsers(feature, commit)
- }
- try {
- await main()
- console.log('Done')
- process.exit(0)
- } catch (error) {
- console.error(error)
- process.exit(1)
- }
|