"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.aggregate = aggregate; var _esQuery = require("@kbn/es-query"); var _authorization = require("../../authorization"); var _audit_events = require("../common/audit_events"); var _common = require("../common"); var _constants = require("../common/constants"); var _validate_rule_aggregation_fields = require("../lib/validate_rule_aggregation_fields"); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ async function aggregate(context, params) { const { options = {}, aggs } = params; const { filter, page = 1, perPage = 0, ...restOptions } = options; let authorizationTuple; try { authorizationTuple = await context.authorization.getFindAuthorizationFilter(_authorization.AlertingAuthorizationEntity.Rule, _constants.alertingAuthorizationFilterOpts); (0, _validate_rule_aggregation_fields.validateRuleAggregationFields)(aggs); } catch (error) { var _context$auditLogger; (_context$auditLogger = context.auditLogger) === null || _context$auditLogger === void 0 ? void 0 : _context$auditLogger.log((0, _audit_events.ruleAuditEvent)({ action: _audit_events.RuleAuditAction.AGGREGATE, error })); throw error; } const { filter: authorizationFilter } = authorizationTuple; const filterKueryNode = (0, _common.buildKueryNodeFilter)(filter); const result = await context.unsecuredSavedObjectsClient.find({ ...restOptions, filter: authorizationFilter && filterKueryNode ? _esQuery.nodeBuilder.and([filterKueryNode, authorizationFilter]) : authorizationFilter, page, perPage, type: 'alert', aggs }); // params. return result.aggregations; }