aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorKseniya Tomskikh <ktomskih@datamonsters.co>2018-03-07 11:38:51 +0700
committerGitHub <noreply@github.com>2018-03-07 11:38:51 +0700
commitfccdf351f8530bb30f7ec9ca61273f0be4c80221 (patch)
treec7038d501e37f37d6082f2c9495592b7c8085d6a /src/main
parent575872b556eeb403147df9fe96b58236e0402050 (diff)
parentcfea2749380d367f4a525c90792b66241df42273 (diff)
downloaddriver-core-fccdf351f8530bb30f7ec9ca61273f0be4c80221.tar.gz
driver-core-fccdf351f8530bb30f7ec9ca61273f0be4c80221.tar.bz2
driver-core-fccdf351f8530bb30f7ec9ca61273f0be4c80221.zip
Merge pull request #134 from drivergroup/opt-paginationv1.8.8
Created directive for optional pagination
Diffstat (limited to 'src/main')
-rw-r--r--src/main/scala/xyz/driver/core/rest/package.scala10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/core/rest/package.scala b/src/main/scala/xyz/driver/core/rest/package.scala
index 19752a1..e3c0c40 100644
--- a/src/main/scala/xyz/driver/core/rest/package.scala
+++ b/src/main/scala/xyz/driver/core/rest/package.scala
@@ -219,6 +219,16 @@ object `package` {
val paginated: Directive1[Pagination] =
parameters(("pageSize".as[Int] ? 100, "pageNumber".as[Int] ? 1)).as(Pagination)
+ private def extractPagination(pageSizeOpt: Option[Int], pageNumberOpt: Option[Int]): Option[Pagination] =
+ (pageSizeOpt, pageNumberOpt) match {
+ case (Some(size), Some(number)) => Option(Pagination(size, number))
+ case (None, None) => Option.empty[Pagination]
+ case (_, _) => throw new IllegalArgumentException("Pagination's parameters are incorrect")
+ }
+
+ val optionalPagination: Directive1[Option[Pagination]] =
+ parameters(("pageSize".as[Int].?, "pageNumber".as[Int].?)).as(extractPagination)
+
def paginationQuery(pagination: Pagination) =
Seq("pageNumber" -> pagination.pageNumber.toString, "pageSize" -> pagination.pageSize.toString)
}