mirror of
https://github.com/standardnotes/server
synced 2026-07-14 00:01:54 -04:00
* feat(revisions): add procedure for transitioning data from primary to secondary database * fix: transition status updating for both items and revisions * fix: dependabot
32 lines
1.2 KiB
TypeScript
32 lines
1.2 KiB
TypeScript
import { Result, RoleName, UseCaseInterface, Uuid } from '@standardnotes/domain-core'
|
|
import { TransitionStatusRepositoryInterface } from '../../Transition/TransitionStatusRepositoryInterface'
|
|
import { UpdateTransitionStatusDTO } from './UpdateTransitionStatusDTO'
|
|
import { RoleServiceInterface } from '../../Role/RoleServiceInterface'
|
|
|
|
export class UpdateTransitionStatus implements UseCaseInterface<void> {
|
|
constructor(
|
|
private transitionStatusRepository: TransitionStatusRepositoryInterface,
|
|
private roleService: RoleServiceInterface,
|
|
) {}
|
|
|
|
async execute(dto: UpdateTransitionStatusDTO): Promise<Result<void>> {
|
|
const userUuidOrError = Uuid.create(dto.userUuid)
|
|
if (userUuidOrError.isFailed()) {
|
|
return Result.fail(userUuidOrError.getError())
|
|
}
|
|
const userUuid = userUuidOrError.getValue()
|
|
|
|
if (dto.status === 'FINISHED') {
|
|
await this.transitionStatusRepository.removeStatus(dto.userUuid, dto.transitionType)
|
|
|
|
await this.roleService.addRoleToUser(userUuid, RoleName.create(RoleName.NAMES.TransitionUser).getValue())
|
|
|
|
return Result.ok()
|
|
}
|
|
|
|
await this.transitionStatusRepository.updateStatus(dto.userUuid, dto.transitionType, dto.status)
|
|
|
|
return Result.ok()
|
|
}
|
|
}
|