in s2core/src/main/scala/org/apache/s2graph/core/rest/RequestParser.scala [313:363]
def toQueryOption(jsValue: JsValue, impIdOpt: Option[String]): QueryOption = {
val filterOutFields = (jsValue \ "filterOutFields").asOpt[List[String]].getOrElse(List(LabelMeta.to.name))
val filterOutQuery = (jsValue \ "filterOut").asOpt[JsValue].map { v =>
toQuery(v, impIdOpt = impIdOpt)
}.map { q =>
q.copy(queryOption = q.queryOption.copy(filterOutFields = filterOutFields, selectColumns = filterOutFields))
}
val removeCycle = (jsValue \ "removeCycle").asOpt[Boolean].getOrElse(true)
val selectColumns = (jsValue \ "select").asOpt[List[String]].getOrElse(List.empty)
val groupBy = extractGroupBy((jsValue \ "groupBy").asOpt[JsValue])
val orderByColumns: List[(String, Boolean)] = (jsValue \ "orderBy").asOpt[List[JsObject]].map { jsLs =>
for {
js <- jsLs
(column, orderJs) <- js.fields
} yield {
val ascending = orderJs.as[String].toUpperCase match {
case "ASC" => true
case "DESC" => false
}
column -> ascending
}
}.getOrElse(Nil)
val withScore = (jsValue \ "withScore").asOpt[Boolean].getOrElse(true)
val returnTree = (jsValue \ "returnTree").asOpt[Boolean].getOrElse(false)
//TODO: Refactor this
val limitOpt = (jsValue \ "limit").asOpt[Int]
val returnAgg = (jsValue \ "returnAgg").asOpt[Boolean].getOrElse(true)
val scoreThreshold = (jsValue \ "scoreThreshold").asOpt[Double].getOrElse(Double.MinValue)
val returnDegree = (jsValue \ "returnDegree").asOpt[Boolean].getOrElse(true)
val ignorePrevStepCache = (jsValue \ "ignorePrevStepCache").asOpt[Boolean].getOrElse(false)
val shouldPropagateScore = (jsValue \ "shouldPropagateScore").asOpt[Boolean].getOrElse(true)
QueryOption(removeCycle = removeCycle,
selectColumns = selectColumns,
groupBy = groupBy,
orderByColumns = orderByColumns,
filterOutQuery = filterOutQuery,
filterOutFields = filterOutFields,
withScore = withScore,
returnTree = returnTree,
limitOpt = limitOpt,
returnAgg = returnAgg,
scoreThreshold = scoreThreshold,
returnDegree = returnDegree,
impIdOpt = impIdOpt,
ignorePrevStepCache,
shouldPropagateScore
)
}