mirror of
https://github.com/standardnotes/server
synced 2026-07-14 00:01:54 -04:00
32 lines
1.1 KiB
TypeScript
32 lines
1.1 KiB
TypeScript
import { DomainEventHandlerInterface, TransitionRequestedEvent } from '@standardnotes/domain-events'
|
|
import { Logger } from 'winston'
|
|
|
|
import { TransitionItemsFromPrimaryToSecondaryDatabaseForUser } from '../UseCase/Transition/TransitionItemsFromPrimaryToSecondaryDatabaseForUser/TransitionItemsFromPrimaryToSecondaryDatabaseForUser'
|
|
|
|
export class TransitionRequestedEventHandler implements DomainEventHandlerInterface {
|
|
constructor(
|
|
private disabled: boolean,
|
|
private transitionItemsFromPrimaryToSecondaryDatabaseForUser: TransitionItemsFromPrimaryToSecondaryDatabaseForUser,
|
|
private logger: Logger,
|
|
) {}
|
|
|
|
async handle(event: TransitionRequestedEvent): Promise<void> {
|
|
if (this.disabled) {
|
|
return
|
|
}
|
|
|
|
if (event.payload.type !== 'items') {
|
|
return
|
|
}
|
|
|
|
const result = await this.transitionItemsFromPrimaryToSecondaryDatabaseForUser.execute({
|
|
userUuid: event.payload.userUuid,
|
|
timestamp: event.payload.timestamp,
|
|
})
|
|
|
|
if (result.isFailed()) {
|
|
this.logger.error(`[${event.payload.userUuid}] Failed to trigger transition: ${result.getError()}`)
|
|
}
|
|
}
|
|
}
|