override fun doExecute()

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)
        }
    }