Трудно провести рефакторинг, потому что я могу только предполагать, какие используемые методы должны возвращаться.Но я думаю, что методы возвращают MaybeError
.В этом случае мы можем опустить fold({ Either.left(it) })
и использовать map
или flatMap
.
internal typealias MaybeError<T> = Either<GenericError, T>
override fun createCompany(companyDomain: CompanyDomain): MaybeError<CompanyDomain> =
checkCompany(companyDomain)
.map { it.toEntity() }
.flatMap { company ->
companyRepository.isCompanyExists(company)
.flatMap { isExists ->
if (isExists) {
MaybeError.left(CompanyNameExists(companyDomain))
} else {
companyRepository.createCompany(company)
}
}
}