我在我的项目中创建了一个存储库,它将负责用户实体的所有存储操作。我将使用mongo作为客户端的db和mongoreactive。我现在的问题是关于类型。基础架构代码的DDD抽象
trait UserRepository {
save(user: User) : ?
}
trait MongoUserRepository extends UserRepository {
save(user: User) : Future[WriteResult] = {
collection.insert(user)
}
}
在我的域中应该如何建模来自MongoReactive的WriteResult?我不希望它泄漏到我的域名中。有没有现有的模式或好的做法?
使用'save(user:User):Unit' *隐式*在您的客户端上要求监视存储库故障(例如:在db故障的情况下),这会迫使以下用法(未指明通过仓库):'try {} catch {case MyFailureException(...)=> ...; _ => ...}'。你不觉得'Try'或'Future'会更好吗? – tkachuko
再给它一个想法,这个确切的方法签名不提供任何从sync(通过此方法签名强制执行)切换到异步API底层库可能具有的简单方法。 – tkachuko