in app/controllers/SearchController.scala [148:184]
def browserSearch(startAt:Int,pageSize:Int) = IsAuthenticatedAsync(circe.json(2048)) { _=> request=>
request.body.as[SearchRequest].fold(
error=>{
Future(BadRequest(GenericErrorResponse("bad_request", error.toString).asJson))
},
request=> {
esClient.execute {
search(indexName) query {
boolQuery().must(request.toSearchParams)
} from startAt size pageSize sortBy fieldSort(request.toSortParam).order(request.toSortOrder)
}.map(response=>{
if(response.isError) {
logger.error(s"Could not perform advanced search: ${response.status} ${response.error.reason}")
InternalServerError(GenericErrorResponse("search_error", response.error.reason).asJson)
} else {
try {
Ok(ObjectListResponse("ok", "entry", fixupUserAvatars(response.result.to[ArchiveEntry]), response.result.totalHits.toInt).asJson)
} catch {
case err:NullPointerException=>
logger.error(s"Caught null pointer exception responding to search request: ", err)
var i:Int=0
response.result.hits.hits.foreach(h=>{
logger.error(s"$i / ${response.result.hits.hits.length}: $h")
logger.error(s"$i / ${response.result.hits.hits.length}: ${h.to[ArchiveEntry]}")
i+=1
})
InternalServerError(GenericErrorResponse("data_error", "An internal error occurred, please see the system logs").asJson)
}
}
})
}
).recover({
case err:Throwable=>
logger.error("Could not do browse search: ", err)
InternalServerError(GenericErrorResponse("error", err.toString).asJson)
})
}