diff options
author | Sergey Nastich <nastich@users.noreply.github.com> | 2018-04-17 17:22:13 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-17 17:22:13 -0400 |
commit | 979d16d518b05c9f702bb526388bd278b9c51cee (patch) | |
tree | 09d389de80c6882d58394e8513f3a267ecf476ba /src/main/scala/xyz/driver | |
parent | 137391fb1137c4d4986b47411ffcc57e4e9bacd0 (diff) | |
download | driver-core-979d16d518b05c9f702bb526388bd278b9c51cee.tar.gz driver-core-979d16d518b05c9f702bb526388bd278b9c51cee.tar.bz2 driver-core-979d16d518b05c9f702bb526388bd278b9c51cee.zip |
ListResponse and Unmarshallers improvementsv1.8.23
* Add an alternative `ListResponse` constructor allowing optional pagination
* Unmarshal JsStrings from query parameters
Diffstat (limited to 'src/main/scala/xyz/driver')
-rw-r--r-- | src/main/scala/xyz/driver/core/json.scala | 6 | ||||
-rw-r--r-- | src/main/scala/xyz/driver/core/rest/package.scala | 5 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/core/json.scala b/src/main/scala/xyz/driver/core/json.scala index 2d912d8..aeb3453 100644 --- a/src/main/scala/xyz/driver/core/json.scala +++ b/src/main/scala/xyz/driver/core/json.scala @@ -34,6 +34,12 @@ object json { } } + implicit def paramUnmarshaller[T](implicit reader: JsonReader[T]): Unmarshaller[String, T] = + Unmarshaller.firstOf( + Unmarshaller.strict((JsString(_: String)) andThen reader.read), + stringToValueUnmarshaller[T] + ) + implicit def idFormat[T]: RootJsonFormat[Id[T]] = new RootJsonFormat[Id[T]] { def write(id: Id[T]) = JsString(id.value) diff --git a/src/main/scala/xyz/driver/core/rest/package.scala b/src/main/scala/xyz/driver/core/rest/package.scala index 385a313..d8f004e 100644 --- a/src/main/scala/xyz/driver/core/rest/package.scala +++ b/src/main/scala/xyz/driver/core/rest/package.scala @@ -44,6 +44,11 @@ final case class ListResponse[+T](items: Seq[T], meta: ListResponse.Meta) object ListResponse { + def apply[T](items: Seq[T], size: Int, pagination: Option[Pagination]): ListResponse[T] = + ListResponse( + items = items, + meta = ListResponse.Meta(size, pagination.fold(1)(_.pageNumber), pagination.fold(size)(_.pageSize))) + final case class Meta(itemsCount: Int, pageNumber: Int, pageSize: Int) object Meta { |