diff options
author | Kseniya Tomskikh <ktomskih@datamonsters.co> | 2018-03-06 14:28:54 +0700 |
---|---|---|
committer | Kseniya Tomskikh <ktomskih@datamonsters.co> | 2018-03-06 14:28:54 +0700 |
commit | 55dfee4187431bb5acb0b898ffb60111a47d9705 (patch) | |
tree | 72d948149f7f4d0860f884e8adfb167d95fd2253 /src/main/scala/xyz | |
parent | 8f1a77047e7ec823cf7ae4a7f71919ff66ae3579 (diff) | |
download | driver-core-55dfee4187431bb5acb0b898ffb60111a47d9705.tar.gz driver-core-55dfee4187431bb5acb0b898ffb60111a47d9705.tar.bz2 driver-core-55dfee4187431bb5acb0b898ffb60111a47d9705.zip |
Created directive for optional pagination
Diffstat (limited to 'src/main/scala/xyz')
-rw-r--r-- | src/main/scala/xyz/driver/core/rest/package.scala | 10 |
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..fb5f4ec 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 optionalPaginated: 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) } |