20200901034313-update-mail-transmission.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import mongoose from 'mongoose';
  2. // eslint-disable-next-line import/no-named-as-default
  3. import Config from '~/server/models/config';
  4. import { getMongoUri, mongoOptions } from '~/server/util/mongoose-utils';
  5. import loggerFactory from '~/utils/logger';
  6. const logger = loggerFactory('growi:migrate:update-mail-transmission');
  7. module.exports = {
  8. async up(db, client) {
  9. logger.info('Apply migration');
  10. mongoose.connect(getMongoUri(), mongoOptions);
  11. const sesAccessKeyId = await Config.findOne({
  12. ns: 'crowi',
  13. key: 'mail:sesAccessKeyId',
  14. });
  15. const transmissionMethod = await Config.findOne({
  16. ns: 'crowi',
  17. key: 'mail:transmissionMethod',
  18. });
  19. if (sesAccessKeyId == null) {
  20. return logger.info('The key \'mail:sesAccessKeyId\' does not exist, value of transmission method will be set smtp automatically.');
  21. }
  22. if (transmissionMethod != null) {
  23. return logger.info('The key \'mail:transmissionMethod\' already exists, there is no need to migrate.');
  24. }
  25. const value = sesAccessKeyId.value != null
  26. ? JSON.stringify('ses')
  27. : JSON.stringify('smtp');
  28. await Config.create({
  29. ns: 'crowi',
  30. key: 'mail:transmissionMethod',
  31. value,
  32. });
  33. logger.info('Migration has successfully applied');
  34. },
  35. async down(db, client) {
  36. logger.info('Rollback migration');
  37. mongoose.connect(getMongoUri(), mongoOptions);
  38. // remote 'mail:transmissionMethod'
  39. await Config.findOneAndDelete({
  40. ns: 'crowi',
  41. key: 'mail:transmissionMethod',
  42. });
  43. logger.info('Migration has been successfully rollbacked');
  44. },
  45. };