I'm looking at this repo on github that is using both play and doobie.
I want to understand how it is eventually converting from a connectionIO/IO from cats to a Future that the playframework is built around from.
I'm looking at a controller and I can see the userRepo but I don't see where or how it is going to/from futures to IO.
def doEdit(): Action[AnyContent] = UserAction { implicit req =>
GsForms.user.bindFromRequest.fold(
formWithErrors => editView(formWithErrors),
data => userRepo.edit(data)
.map(_ => Redirect(PublishedSpeakerRoutes.detail(req.user.slug)).flashing("success" -> "Profile updated"))
)
}