2
0

20180926134048-make-email-unique.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. 'use strict';
  2. require('module-alias/register');
  3. const logger = require('@alias/logger')('growi:migrate:make-email-unique');
  4. const mongoose = require('mongoose');
  5. const config = require('@root/config/migrate');
  6. module.exports = {
  7. async up(db, next) {
  8. logger.info('Start migration');
  9. mongoose.connect(config.mongoUri, config.mongodb.options);
  10. const User = require('@server/models/user')();
  11. // get all users who has 'deleted@deleted' email
  12. const users = await User.find({email: 'deleted@deleted'});
  13. if (users.length > 0) {
  14. logger.info(`${users.length} users found. Replace email...`, users);
  15. }
  16. // make email unique
  17. const promises = users.map(user => {
  18. const now = new Date();
  19. const deletedLabel = `deleted_at_${now.getTime()}`;
  20. user.email = `${deletedLabel}@deleted`;
  21. return user.save();
  22. });
  23. await Promise.all(promises);
  24. // sync index
  25. logger.info('Invoking syncIndexes');
  26. await User.syncIndexes();
  27. await mongoose.disconnect();
  28. logger.info('Migration has successfully terminated');
  29. next();
  30. },
  31. down(db, next) {
  32. // do not rollback
  33. next();
  34. }
  35. };