20200901034313-update-mail-transmission.js 1.5 KB

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