aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuicommon/parsers/ListRequestParser.scala
blob: c3146cee323aee6bf07d0e4df42da7467c0994a2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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)
  }

}