From 4bd5fb22b447b0e0fdb136aa46ddc812c8b272cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20S=C3=B3jko?= Date: Thu, 9 Mar 2023 10:48:40 +0100 Subject: [PATCH] fix(auth): remove migrate email settings procedure --- packages/auth/bin/migrate_email_settings.ts | 152 ------------------ .../entrypoint-migrate-email-settings.js | 11 -- packages/auth/docker/entrypoint.sh | 5 - 3 files changed, 168 deletions(-) delete mode 100644 packages/auth/bin/migrate_email_settings.ts delete mode 100644 packages/auth/docker/entrypoint-migrate-email-settings.js diff --git a/packages/auth/bin/migrate_email_settings.ts b/packages/auth/bin/migrate_email_settings.ts deleted file mode 100644 index 0c2047212..000000000 --- a/packages/auth/bin/migrate_email_settings.ts +++ /dev/null @@ -1,152 +0,0 @@ -import 'reflect-metadata' - -import 'newrelic' - -import { Stream } from 'stream' - -import { Logger } from 'winston' -import * as dayjs from 'dayjs' -import * as utc from 'dayjs/plugin/utc' - -import { ContainerConfigLoader } from '../src/Bootstrap/Container' -import TYPES from '../src/Bootstrap/Types' -import { Env } from '../src/Bootstrap/Env' -import { DomainEventPublisherInterface } from '@standardnotes/domain-events' -import { DomainEventFactoryInterface } from '../src/Domain/Event/DomainEventFactoryInterface' -import { SettingRepositoryInterface } from '../src/Domain/Setting/SettingRepositoryInterface' -import { SettingName } from '@standardnotes/settings' -import { EmailLevel } from '@standardnotes/domain-core' -import { UserSubscriptionServiceInterface } from '../src/Domain/Subscription/UserSubscriptionServiceInterface' -import { UserRepositoryInterface } from '../src/Domain/User/UserRepositoryInterface' -import { SubscriptionSettingServiceInterface } from '../src/Domain/Setting/SubscriptionSettingServiceInterface' -import { EncryptionVersion } from '../src/Domain/Encryption/EncryptionVersion' -import { SettingServiceInterface } from '../src/Domain/Setting/SettingServiceInterface' - -const requestSettingMigration = async ( - settingRepository: SettingRepositoryInterface, - subscriptionSettingService: SubscriptionSettingServiceInterface, - userRepository: UserRepositoryInterface, - userSubscriptionService: UserSubscriptionServiceInterface, - domainEventFactory: DomainEventFactoryInterface, - domainEventPublisher: DomainEventPublisherInterface, - settingService: SettingServiceInterface, -): Promise => { - const stream = await settingRepository.streamAllByName( - SettingName.create(SettingName.NAMES.MuteSignInEmails).getValue(), - ) - - return new Promise((resolve, reject) => { - stream - .pipe( - new Stream.Transform({ - objectMode: true, - transform: async (setting, _encoding, callback) => { - const user = await userRepository.findOneByUuid(setting.setting_user_uuid) - if (!user) { - callback() - - return - } - - const { regularSubscription, sharedSubscription } = - await userSubscriptionService.findRegularSubscriptionForUserUuid(user.uuid) - - const subscription = sharedSubscription ?? regularSubscription - if (!subscription) { - await domainEventPublisher.publish( - domainEventFactory.createMuteEmailsSettingChangedEvent({ - username: user.email, - mute: true, - emailSubscriptionRejectionLevel: EmailLevel.LEVELS.SignIn, - }), - ) - - await settingRepository.deleteByUserUuid({ - userUuid: user.uuid, - settingName: SettingName.NAMES.MuteSignInEmails, - }) - - callback() - - return - } - - const typeORMSetting = await settingService.findSettingWithDecryptedValue({ - settingName: SettingName.create(SettingName.NAMES.MuteSignInEmails).getValue(), - settingUuid: setting.setting_uuid, - userUuid: user.uuid, - }) - - if (!typeORMSetting) { - callback() - - return - } - - await subscriptionSettingService.createOrReplace({ - userSubscription: subscription, - props: { - name: SettingName.NAMES.MuteSignInEmails, - sensitive: false, - serverEncryptionVersion: EncryptionVersion.Unencrypted, - unencryptedValue: typeORMSetting.value, - }, - }) - - await settingRepository.deleteByUserUuid({ - userUuid: user.uuid, - settingName: SettingName.NAMES.MuteSignInEmails, - }) - - callback() - }, - }), - ) - .on('finish', resolve) - .on('error', reject) - }) -} - -const container = new ContainerConfigLoader() -void container.load().then((container) => { - dayjs.extend(utc) - - const env: Env = new Env() - env.load() - - const logger: Logger = container.get(TYPES.Logger) - - logger.info('Starting migration of mute sign in emails settings to subscription settings...') - - const settingRepository: SettingRepositoryInterface = container.get(TYPES.SettingRepository) - const domainEventFactory: DomainEventFactoryInterface = container.get(TYPES.DomainEventFactory) - const domainEventPublisher: DomainEventPublisherInterface = container.get(TYPES.DomainEventPublisher) - const subscriptionSettingService: SubscriptionSettingServiceInterface = container.get( - TYPES.SubscriptionSettingService, - ) - const userRepository: UserRepositoryInterface = container.get(TYPES.UserRepository) - const userSubscriptionService: UserSubscriptionServiceInterface = container.get(TYPES.UserSubscriptionService) - const settingService: SettingServiceInterface = container.get(TYPES.SettingService) - - Promise.resolve( - requestSettingMigration( - settingRepository, - subscriptionSettingService, - userRepository, - userSubscriptionService, - domainEventFactory, - domainEventPublisher, - settingService, - ), - ) - .then(() => { - logger.info('Migration of mute sign in emails settings to subscription settings finished successfully.') - - process.exit(0) - }) - .catch((error) => { - logger.error(`Migration of mute sign in emails settings to subscription settings failed: ${error.message}`) - - process.exit(1) - }) -}) diff --git a/packages/auth/docker/entrypoint-migrate-email-settings.js b/packages/auth/docker/entrypoint-migrate-email-settings.js deleted file mode 100644 index e3d8aed23..000000000 --- a/packages/auth/docker/entrypoint-migrate-email-settings.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict' - -const path = require('path') - -const pnp = require(path.normalize(path.resolve(__dirname, '../../..', '.pnp.cjs'))).setup() - -const index = require(path.normalize(path.resolve(__dirname, '../dist/bin/migrate_email_settings.js'))) - -Object.defineProperty(exports, '__esModule', { value: true }) - -exports.default = index diff --git a/packages/auth/docker/entrypoint.sh b/packages/auth/docker/entrypoint.sh index ec0bf10fd..76d5e2a87 100755 --- a/packages/auth/docker/entrypoint.sh +++ b/packages/auth/docker/entrypoint.sh @@ -40,11 +40,6 @@ case "$COMMAND" in node docker/entrypoint-user-email-backup.js $EMAIL ;; - 'migrate-email-settings' ) - echo "[Docker] Starting Email Settings Migration..." - node docker/entrypoint-migrate-email-settings.js - ;; - 'dropbox-daily-backup' ) echo "[Docker] Starting Dropbox Daily Backup..." node docker/entrypoint-backup.js dropbox daily