Я пытаюсь добиться чего-то вроде следующего кода
def getUsers: EitherT[Future, String, Response] = {
for {
users <- EitherT(userRepository.findAll) // this method would retrieve a Future[Either[String, Seq[User]]]
user <- users
friends <- EitherT(userRepository.findFriends(user.id))
} yield new Response(user, friends)
}
Я понимаю, что это невозможно, потому что EitherT
не управляет foreach
.
case class User(id: Long, name: String, email: String)
case class Response(user: User, friends: Seq[User])
Какой хороший способ решить эту проблему?