| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- const DRY_RUN = process.env.DRY_RUN !== 'false'
- const { db, waitForDb } = require('../app/src/infrastructure/mongodb')
- const { batchedUpdate } = require('./helpers/batchedUpdate')
- console.log({
- DRY_RUN,
- })
- function anyInviteEmailHasUppercaseChars(subscription) {
- return subscription.teamInvites.some(invite => {
- return /[A-Z]/.test(invite.email)
- })
- }
- async function processBatch(subscriptions) {
- for (const subscription of subscriptions) {
- if (anyInviteEmailHasUppercaseChars(subscription)) {
- console.log('fixing emails in group invites for', subscription._id)
- if (!DRY_RUN) {
- await db.subscriptions.updateOne({ _id: subscription._id }, [
- {
- $set: {
- teamInvites: {
- $map: {
- input: '$teamInvites',
- in: {
- $mergeObjects: [
- '$$this',
- {
- email: {
- $toLower: '$$this.email',
- },
- },
- ],
- },
- },
- },
- },
- },
- ])
- }
- }
- }
- }
- async function main() {
- await waitForDb()
- const projection = {
- _id: 1,
- teamInvites: 1,
- }
- const query = {
- 'teamInvites.0': {
- $exists: true,
- },
- }
- await batchedUpdate('subscriptions', query, processBatch, projection)
- }
- main()
- .then(() => {
- console.error('Done.')
- process.exit(0)
- })
- .catch(error => {
- console.error({ error })
- process.exit(1)
- })
|