| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- const tags = ['server-ce', 'server-pro']
- function fixEmails(user) {
- let emails = user.emails
- if (!emails || emails.length === 0) {
- emails = [{ email: user.email, createdAt: new Date() }]
- }
- for (let i = 0; i < emails.length; i++) {
- const reversedHostname = emails[i].email
- .split('@')[1]
- .split('')
- .reverse()
- .join('')
- if (emails[i].reversedHostname !== reversedHostname) {
- emails = emails.slice()
- emails[i].reversedHostname = reversedHostname
- }
- }
- return emails
- }
- const migrate = async client => {
- const { db } = client
- const cursor = db.users.find({}, { projection: { email: 1, emails: 1 } })
- for await (const user of cursor) {
- const emails = fixEmails(user)
- if (user.emails !== emails) {
- await db.users.updateOne({ _id: user._id }, { $set: { emails } })
- }
- }
- }
- const rollback = async () => {}
- export default {
- tags,
- migrate,
- rollback,
- }
|