diff options
author | Jakob Odersky <jakob@driver.xyz> | 2017-08-03 14:23:12 -0700 |
---|---|---|
committer | Jakob Odersky <jakob@driver.xyz> | 2017-08-16 19:26:10 -0700 |
commit | 0783832d1c58f9463e85ed504fc0edbfaedc09c5 (patch) | |
tree | 2fd4fdf6a18476599eb5214bd1f2e6838fbf42a6 | |
parent | eb5e95e95714ce23705a0de0f4dd525a8efeafe2 (diff) | |
download | rest-query-0783832d1c58f9463e85ed504fc0edbfaedc09c5.tar.gz rest-query-0783832d1c58f9463e85ed504fc0edbfaedc09c5.tar.bz2 rest-query-0783832d1c58f9463e85ed504fc0edbfaedc09c5.zip |
Add parser directives
-rw-r--r-- | src/main/scala/xyz/driver/pdsuicommon/http/Directives.scala | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/pdsuicommon/http/Directives.scala b/src/main/scala/xyz/driver/pdsuicommon/http/Directives.scala new file mode 100644 index 0000000..bb6a9e3 --- /dev/null +++ b/src/main/scala/xyz/driver/pdsuicommon/http/Directives.scala @@ -0,0 +1,31 @@ +package xyz.driver.pdsuicommon.http + +import akka.http.scaladsl.server.Directive1 +import akka.http.scaladsl.server.Directives._ +import xyz.driver.pdsuicommon.parsers._ +import xyz.driver.pdsuicommon.db.{Pagination, Sorting, SearchFilterExpr} +import scala.util._ + +trait Directives { + + val paginated: Directive1[Pagination] = parameters(('pageSize.as[Int], 'pageNumber.as[Int])).tmap { + case (size, number) => Pagination(size, number) + } + + def sorted(validDimensions: Set[String]): Directive1[Sorting] = parameterSeq.flatMap{ params => + SortingParser.parse(validDimensions, params) match { + case Success(sorting) => provide(sorting) + case Failure(ex) => failWith(ex) + } + } + + val searchFiltered: Directive1[SearchFilterExpr] = parameterSeq.flatMap{ params => + SearchFilterParser.parse(params) match { + case Success(sorting) => provide(sorting) + case Failure(ex) => failWith(ex) + } + } + +} + +object Directives extends Directives |