aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuicommon/parsers/ListRequestParser.scala
diff options
context:
space:
mode:
authorJakob Odersky <jakob@driver.xyz>2017-08-02 13:38:49 -0700
committerJakob Odersky <jakob@driver.xyz>2017-08-16 19:26:10 -0700
commit985ee69beed836b97f3476306736d3f15ce37e1c (patch)
tree73a5ecb25c3162d574febe5d39cbb1fafaace699 /src/main/scala/xyz/driver/pdsuicommon/parsers/ListRequestParser.scala
parent322ea28ecf5ad5f65d3376f3e97e004d229d4736 (diff)
downloadrest-query-985ee69beed836b97f3476306736d3f15ce37e1c.tar.gz
rest-query-985ee69beed836b97f3476306736d3f15ce37e1c.tar.bz2
rest-query-985ee69beed836b97f3476306736d3f15ce37e1c.zip
Add parsers to common
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuicommon/parsers/ListRequestParser.scala')
-rw-r--r--src/main/scala/xyz/driver/pdsuicommon/parsers/ListRequestParser.scala20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/pdsuicommon/parsers/ListRequestParser.scala b/src/main/scala/xyz/driver/pdsuicommon/parsers/ListRequestParser.scala
new file mode 100644
index 0000000..617a77e
--- /dev/null
+++ b/src/main/scala/xyz/driver/pdsuicommon/parsers/ListRequestParser.scala
@@ -0,0 +1,20 @@
+package xyz.driver.server.parsers
+
+import xyz.driver.pdsuicommon.db.{Pagination, SearchFilterExpr, Sorting}
+import play.api.mvc._
+
+import scala.util.Try
+
+final case class ListRequestParameters(filter: SearchFilterExpr, sorting: Sorting, pagination: Pagination)
+
+class ListRequestParser(validSortingFields: Set[String]) {
+
+ def tryParse(request: Request[AnyContent]): Try[ListRequestParameters] = {
+ for {
+ queryFilters <- SearchFilterParser.parse(request.queryString)
+ sorting <- SortingParser.parse(validSortingFields, request.queryString)
+ pagination <- PaginationParser.parse(request.queryString)
+ } yield ListRequestParameters(queryFilters, sorting, pagination)
+ }
+
+}