Я пишу CRUD rest api, и у меня возникла проблема с объединением 2 фьючерсов на сервисном уровне.
Идея состоит в том, чтобы вставить Entity в db, а затем извлечь все сгенерированные db значения по id.
Я пробовал andThen (), как в Java, но он не может вернуть Future [Entity], он говорит, что это все еще Future [Long]
class Service {
def find(id: Long): Future[Option[Entry]] = db.run(repo.findEntry(id))
//TODO Fails: Expression of type Future[Long] doesn't conform to expected type Future[Option[Entity]]
def insert(): Future[Option[Entry]] = db.run(repo.insertEntry())
.andThen { case Success(id) =>
find(id)
}
}
class Repository {
def findEntry(id: Long): DBIO[Option[Entry]] =
table.filter(_.id === id).result.headOption
def insertEntry()(implicit ec: ExecutionContext): DBIO[Long] =
table returning table.map(_.id) += Entry()
}
Я чувствую себя какОтвет достаточно прост, но просто не могу его найти.