TriggerTransitionFromPrimaryToSecondaryDatabaseForUser.ts 984 B

123456789101112131415161718192021222324
  1. import { Result, UseCaseInterface } from '@standardnotes/domain-core'
  2. import { DomainEventPublisherInterface } from '@standardnotes/domain-events'
  3. import { TriggerTransitionFromPrimaryToSecondaryDatabaseForUserDTO } from './TriggerTransitionFromPrimaryToSecondaryDatabaseForUserDTO'
  4. import { DomainEventFactoryInterface } from '../../../Event/DomainEventFactoryInterface'
  5. export class TriggerTransitionFromPrimaryToSecondaryDatabaseForUser implements UseCaseInterface<void> {
  6. constructor(
  7. private domainEventPubliser: DomainEventPublisherInterface,
  8. private domainEventFactory: DomainEventFactoryInterface,
  9. ) {}
  10. async execute(dto: TriggerTransitionFromPrimaryToSecondaryDatabaseForUserDTO): Promise<Result<void>> {
  11. const event = this.domainEventFactory.createTransitionStatusUpdatedEvent({
  12. userUuid: dto.userUuid,
  13. status: 'STARTED',
  14. transitionType: 'items',
  15. })
  16. await this.domainEventPubliser.publish(event)
  17. return Result.ok()
  18. }
  19. }