aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuicommon/parsers/ListRequestParser.scala
diff options
context:
space:
mode:
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..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)
+ }
+
+}