in alerting/src/main/kotlin/org/opensearch/alerting/transport/TransportGetDestinationsAction.kt [65:111]
override fun doExecute(
task: Task,
getDestinationsRequest: GetDestinationsRequest,
actionListener: ActionListener<GetDestinationsResponse>
) {
val user = readUserFromThreadContext(client)
val tableProp = getDestinationsRequest.table
val sortBuilder = SortBuilders
.fieldSort(tableProp.sortString)
.order(SortOrder.fromString(tableProp.sortOrder))
if (!tableProp.missing.isNullOrBlank()) {
sortBuilder.missing(tableProp.missing)
}
val searchSourceBuilder = SearchSourceBuilder()
.sort(sortBuilder)
.size(tableProp.size)
.from(tableProp.startIndex)
.fetchSource(FetchSourceContext(true, Strings.EMPTY_ARRAY, Strings.EMPTY_ARRAY))
.seqNoAndPrimaryTerm(true)
.version(true)
val queryBuilder = QueryBuilders.boolQuery()
.must(QueryBuilders.existsQuery("destination"))
if (!getDestinationsRequest.destinationId.isNullOrBlank())
queryBuilder.filter(QueryBuilders.termQuery("_id", getDestinationsRequest.destinationId))
if (getDestinationsRequest.destinationType != "ALL")
queryBuilder.filter(QueryBuilders.termQuery("destination.type", getDestinationsRequest.destinationType))
if (!tableProp.searchString.isNullOrBlank()) {
queryBuilder
.must(
QueryBuilders
.queryStringQuery(tableProp.searchString)
.defaultOperator(Operator.AND)
.field("destination.type")
.field("destination.name")
)
}
searchSourceBuilder.query(queryBuilder)
client.threadPool().threadContext.stashContext().use {
resolve(searchSourceBuilder, actionListener, user)
}
}