@@ -21,18 +21,19 @@ import { isOutdated } from '../../migrations/helpers';
2121import { getIndexVersion } from '../../routes/index/get_index_version' ;
2222import { MIN_EQL_RULE_INDEX_VERSION } from '../../routes/index/get_signals_template' ;
2323import { EqlRuleParams } from '../../schemas/rule_schemas' ;
24- import { buildSignalFromEvent , buildSignalGroupFromSequence } from '../build_bulk_body' ;
2524import { getInputIndex } from '../get_input_output_index' ;
26- import { filterDuplicateSignals } from '../filter_duplicate_signals' ;
25+
2726import {
2827 AlertAttributes ,
2928 BulkCreate ,
29+ WrapHits ,
30+ WrapSequences ,
3031 EqlSignalSearchResponse ,
3132 RuleRangeTuple ,
3233 SearchAfterAndBulkCreateReturnType ,
33- WrappedSignalHit ,
34+ SimpleHit ,
3435} from '../types' ;
35- import { createSearchAfterReturnType , makeFloatString , wrapSignal } from '../utils' ;
36+ import { createSearchAfterReturnType , makeFloatString } from '../utils' ;
3637
3738export const eqlExecutor = async ( {
3839 rule,
@@ -43,6 +44,8 @@ export const eqlExecutor = async ({
4344 logger,
4445 searchAfterSize,
4546 bulkCreate,
47+ wrapHits,
48+ wrapSequences,
4649} : {
4750 rule : SavedObject < AlertAttributes < EqlRuleParams > > ;
4851 tuple : RuleRangeTuple ;
@@ -52,6 +55,8 @@ export const eqlExecutor = async ({
5255 logger : Logger ;
5356 searchAfterSize : number ;
5457 bulkCreate : BulkCreate ;
58+ wrapHits : WrapHits ;
59+ wrapSequences : WrapSequences ;
5560} ) : Promise < SearchAfterAndBulkCreateReturnType > => {
5661 const result = createSearchAfterReturnType ( ) ;
5762 const ruleParams = rule . attributes . params ;
@@ -104,27 +109,18 @@ export const eqlExecutor = async ({
104109 const eqlSignalSearchEnd = performance . now ( ) ;
105110 const eqlSearchDuration = makeFloatString ( eqlSignalSearchEnd - eqlSignalSearchStart ) ;
106111 result . searchAfterTimes = [ eqlSearchDuration ] ;
107- let newSignals : WrappedSignalHit [ ] | undefined ;
112+ let newSignals : SimpleHit [ ] | undefined ;
108113 if ( response . hits . sequences !== undefined ) {
109- newSignals = response . hits . sequences . reduce (
110- ( acc : WrappedSignalHit [ ] , sequence ) =>
111- acc . concat ( buildSignalGroupFromSequence ( sequence , rule , ruleParams . outputIndex ) ) ,
112- [ ]
113- ) ;
114+ newSignals = wrapSequences ( response . hits . sequences ) ;
114115 } else if ( response . hits . events !== undefined ) {
115- newSignals = filterDuplicateSignals (
116- rule . id ,
117- response . hits . events . map ( ( event ) =>
118- wrapSignal ( buildSignalFromEvent ( event , rule , true ) , ruleParams . outputIndex )
119- )
120- ) ;
116+ newSignals = wrapHits ( response . hits . events ) ;
121117 } else {
122118 throw new Error (
123119 'eql query response should have either `sequences` or `events` but had neither'
124120 ) ;
125121 }
126122
127- if ( newSignals . length > 0 ) {
123+ if ( newSignals ? .length ) {
128124 const insertResult = await bulkCreate ( newSignals ) ;
129125 result . bulkCreateTimes . push ( insertResult . bulkCreateDuration ) ;
130126 result . createdSignalsCount += insertResult . createdItemsCount ;
0 commit comments