diff options
author | Jakob Odersky <jakob@driver.xyz> | 2017-08-04 13:07:24 -0700 |
---|---|---|
committer | Jakob Odersky <jakob@driver.xyz> | 2017-08-16 19:26:10 -0700 |
commit | 6df9bf52db930ebd845ee7d35226b174d733e988 (patch) | |
tree | 1575fcfd1e9db55d02e370dfad3134c2a87c8604 /src/main/scala/xyz/driver/pdsuicommon/parsers/ListRequestParser.scala | |
parent | 644f0b2ee2d8e69949337c816bb64b19f5787025 (diff) | |
download | rest-query-6df9bf52db930ebd845ee7d35226b174d733e988.tar.gz rest-query-6df9bf52db930ebd845ee7d35226b174d733e988.tar.bz2 rest-query-6df9bf52db930ebd845ee7d35226b174d733e988.zip |
Temporary back-port of parsers
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuicommon/parsers/ListRequestParser.scala')
-rw-r--r-- | src/main/scala/xyz/driver/pdsuicommon/parsers/ListRequestParser.scala | 20 |
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..0356784 --- /dev/null +++ b/src/main/scala/xyz/driver/pdsuicommon/parsers/ListRequestParser.scala @@ -0,0 +1,20 @@ +package xyz.driver.pdsuicommon.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) + } + +} |