package controllers import javax.inject.{Inject, Singleton} import com.example.user.UserDAO import play.api.mvc._ import scala.concurrent.ExecutionContext import com.example.user.CarDAO import com.example.services.LibraryService import play.api.libs.json.Json import com.example.services.TaskLibraryService case class UserForm(name: String) object UserForm { implicit val userFormFormat = Json.format[UserForm] } @Singleton class HomeController @Inject() ( userDAO: UserDAO, carDAO: CarDAO, libraryService: LibraryService, taskLibraryService: TaskLibraryService, cc: ControllerComponents )(implicit ec: ExecutionContext) extends AbstractController(cc) { def index = Action.async { userDAO.all.map { users => Ok(views.html.index(users)) } } def cars = Action.async { carDAO.all.map { cars => Ok(views.html.cars(cars)) } } def book = Action.async { // libraryService.findBookById(1).map(e => Ok(Json.toJson(e))) // libraryService.insertBookAndAuthor(Book("new book"), Author(2, "Some retard")) for { maybeBook <- libraryService.findBookById(1) } yield (Ok(Json.toJson(maybeBook))) } def authors(bookId: Long) = Action.async { libraryService .getAuthorsForBook(bookId) .map(t => { Ok(Json.toJson(t)) }) } def user = Action { Ok(Json.toJson(UserForm("hello"))) } }