trait NonDirectivesMixin {
def fetchIntFutureFunction: Future[Seq[Int]] = ???
implicit class SeqWithOptionalFiltering[T: Queryable](ts: Seq[T]) {
def optionalFilter(query: Option[String]): Seq[T] = query match {
case Some(q) ⇒ ts.filter(t ⇒ implicitly[Queryable[T]].matches(t, q))
case None ⇒ ts
}
}
}
trait UserlistExperimentRoutes extends Directives with NonDirectivesMixin {
implicit def ec: ExecutionContext
def route = get {
parameter('query.?) { q ⇒
onSuccess(fetchIntFutureFunction) { ints ⇒
complete(ints.optionalFilter(q).mkString)
// I used mkString for this example since I don't
// have a marshaller[Seq[Int]] in scope
}
}
}
}