Skip to content

Instantly share code, notes, and snippets.

@adamw
Created May 4, 2019 12:37
Show Gist options
  • Save adamw/3e755e3f75dc62045e573ede8b194434 to your computer and use it in GitHub Desktop.
Save adamw/3e755e3f75dc62045e573ede8b194434 to your computer and use it in GitHub Desktop.
import tapir.server.akkahttp._
import tapir.model.StatusCodes
import Database._
import akka.http.scaladsl.server.Route
import scala.concurrent.Future
val getBooksRoute: Route = Endpoints.getBooks.toRoute { booksQuery =>
if (booksQuery.limit.getOrElse(0) < 0) {
Future.successful(Left((StatusCodes.BadRequest, ErrorInfo("Limit must be positive"))))
} else {
val filteredByYear = booksQuery.year
.map(year => books.filter(_.year == year))
.getOrElse(books)
val limited = booksQuery.limit
.map(limit => filteredByYear.take(limit))
.getOrElse(filteredByYear)
Future.successful(Right(limited))
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment