in src/main/scala/datastore/ElasticsearchRepo.scala [242:271]
override def marshalledTags(maybeQuery:Option[String],
maybeFuzziness:Option[String],
maybeTagId:Option[String],
maybeSection: Option[String],
tagType:Option[String],
maybeCategory:Option[String],
maybeReferences:Option[String],
orderBy: Option[SortOrder],
limit: Option[Int],
cursor: Option[String]): Future[Edge[Tag]] = {
val pageSize = limit.getOrElse(defaultPageSize)
val sortParam = if(maybeSection.isDefined || tagType.isDefined) {
ScoreSort(orderBy.getOrElse(SortOrder.DESC))
} else {
FieldSort("id", order = orderBy.getOrElse(SortOrder.ASC))
}
Edge.decodeCursor(cursor) match {
case Right(maybeCursor)=>
client.execute {
buildTagQuery(maybeTagId, maybeSection, tagType, maybeQuery, maybeFuzziness, maybeCategory, maybeReferences)
.sortBy(sortParam)
.limit(pageSize)
.searchAfter(maybeCursor)
}.flatMap(handleResponseMultiple(_, pageSize)(tagTransform))
case Left(err)=>
Future.failed(new RuntimeException(s"Unable to decode cursor value $cursor: $err"))
}
}