in app/controllers/Api.scala [53:74]
def summary[T <: IndexedItem](
sourceAgent: CollectorAgent[T],
transform: T => Iterable[JsValue],
key: String,
enableFilter: Boolean = false
)(implicit ordering: Ordering[String]): Action[AnyContent] =
Action.async { implicit request =>
ApiResult.filter[JsValue] {
sourceAgent
.get()
.map { datum => datum.label -> datum.data.flatMap(transform) }
.toMap
} reduce { transformed =>
val objects =
transformed.values.toSeq.flatten.distinct.sortBy(sortString)(ordering)
val filteredObjects = if (enableFilter) {
val filter = ResourceFilter.fromRequest
objects.filter(filter.isMatch)
} else objects
Json.obj(key -> Json.toJson(filteredObjects))
}
}