Files
standardnotes-server/packages/syncing-server/src/Domain/UseCase/GetSharedVaultInvitesSentByUser/GetSharedVaultInvitesSentByUser.ts
T
72310130d2 feat: shared vault invites controller and use cases (#647)
* feat: get shared vault invites sent by user.

Co-authored-by: Mo <[email protected]>

* feat: shared vault invites controller.

Co-authored-by: Mo <[email protected]>

---------

Co-authored-by: Mo <[email protected]>
2023-07-07 13:39:43 +02:00

37 lines
1.5 KiB
TypeScript

import { Result, UseCaseInterface, Uuid } from '@standardnotes/domain-core'
import { SharedVaultInvite } from '../../SharedVault/User/Invite/SharedVaultInvite'
import { GetSharedVaultInvitesSentByUserDTO } from './GetSharedVaultInvitesSentByUserDTO'
import { SharedVaultInviteRepositoryInterface } from '../../SharedVault/User/Invite/SharedVaultInviteRepositoryInterface'
export class GetSharedVaultInvitesSentByUser implements UseCaseInterface<SharedVaultInvite[]> {
constructor(private sharedVaultInviteRepository: SharedVaultInviteRepositoryInterface) {}
async execute(dto: GetSharedVaultInvitesSentByUserDTO): Promise<Result<SharedVaultInvite[]>> {
const senderUuidOrError = Uuid.create(dto.senderUuid)
if (senderUuidOrError.isFailed()) {
return Result.fail(senderUuidOrError.getError())
}
const senderUuid = senderUuidOrError.getValue()
let sharedVaultUuid: Uuid | undefined
if (dto.sharedVaultUuid) {
const sharedVaultUuidOrError = Uuid.create(dto.sharedVaultUuid)
if (sharedVaultUuidOrError.isFailed()) {
return Result.fail(sharedVaultUuidOrError.getError())
}
sharedVaultUuid = sharedVaultUuidOrError.getValue()
}
if (sharedVaultUuid) {
return Result.ok(
await this.sharedVaultInviteRepository.findBySenderUuidAndSharedVaultUuid({
senderUuid,
sharedVaultUuid,
}),
)
}
return Result.ok(await this.sharedVaultInviteRepository.findBySenderUuid(senderUuid))
}
}