Created
March 19, 2018 13:02
-
-
Save mingyang91/e4cec842b7625495165fabc20041e05a to your computer and use it in GitHub Desktop.
尝试移除模板代码
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// utils | |
class FromJsonQueryStringBindable[T] ()(implicit decoder: Decoder[T], | |
encoder: Encoder[T]) extends QueryStringBindable[T] { | |
implicit val binder: QueryStringBindable[Json] = JsonQueryStringBindable | |
override def bind(key: String, params: Map[String, Seq[String]]): Option[Either[String, T]] = | |
binder.bind(key, params).map(_.flatMap(_.as[T].left.map(_.message))) | |
override def unbind(key: String, value: T): String = s"$key=${value.asJson}" | |
} | |
object JsonQueryStringBindable extends QueryStringBindable[Json] { | |
override def bind(key: String, params: Map[String, Seq[String]]): Option[Either[String, Json]] = | |
params.get(key).flatMap(_.headOption).map(parse(_).left.map(_.message)) | |
override def unbind(key: String, value: Json): String = s"$key=${value.toString}" | |
} | |
// models | |
case class CandidateFilter() | |
object CandidateFilter { | |
implicit def queryStringBindable = new FromJsonQueryStringBindable[CandidateFilter] | |
} | |
case class Order[T]() | |
object Order { | |
implicit def queryStringBindable[T] = new FromJsonQueryStringBindable[Order[T]] | |
} | |
case class Paging (size: Int = 10, number: Int = 1) | |
object Paging { | |
implicit def queryStringBindable = new FromJsonQueryStringBindable[Paging] | |
} | |
//routes | |
GET /api/open-candidates/ controllers.CandidateController.list(filter: models.CandidateFilter ?= new models.CandidateFilter, order: models.Order[com.mesoor.models.TenantTables.CandidateRow] ?= new models.Order[com.mesoor.models.TenantTables.CandidateRow], paging: models.Paging ?= new models.Paging() | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment