Skip to content

Commit 6102281

Browse files
committed
feat: include evaluation rule and rule value in query evaluation model and logic
1 parent 2d0baf9 commit 6102281

2 files changed

Lines changed: 31 additions & 23 deletions

File tree

plugins/compliance-orchestrator/evaluator/evaluator.go

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,13 @@ func (e *Evaluator) Evaluate(ctx context.Context, cfg models.ControlConfig) (mod
3535
if !patternExists(int(q.IndexPatternID), patterns) {
3636
reason := "Index pattern not active"
3737
qr := models.QueryEvaluation{
38-
QueryConfigID: q.ID,
39-
QueryName: q.QueryName,
40-
Hits: 0,
41-
Status: models.QueryStatusNotApplicable,
42-
ErrorMessage: &reason,
38+
QueryConfigID: q.ID,
39+
QueryName: q.QueryName,
40+
EvaluationRule: q.EvaluationRule,
41+
RuleValue: q.RuleValue,
42+
Hits: 0,
43+
Status: models.QueryStatusNotApplicable,
44+
ErrorMessage: &reason,
4345
}
4446
results = append(results, qr)
4547
continue
@@ -68,12 +70,14 @@ func (e *Evaluator) evaluateQuery(ctx context.Context, q models.QueryConfig) mod
6870
if err != nil {
6971
msg := fmt.Sprintf("query execution failed: %v", err)
7072
return models.QueryEvaluation{
71-
QueryConfigID: q.ID,
72-
QueryName: q.QueryName,
73-
Hits: 0,
74-
Status: models.QueryStatusError,
75-
ErrorMessage: &msg,
76-
Evidence: nil,
73+
QueryConfigID: q.ID,
74+
QueryName: q.QueryName,
75+
EvaluationRule: q.EvaluationRule,
76+
RuleValue: q.RuleValue,
77+
Hits: 0,
78+
Status: models.QueryStatusError,
79+
ErrorMessage: &msg,
80+
Evidence: nil,
7781
}
7882
}
7983

@@ -95,12 +99,14 @@ func (e *Evaluator) evaluateQuery(ctx context.Context, q models.QueryConfig) mod
9599
status, errMsg := evaluateQueryRule(q, res.Count)
96100

97101
return models.QueryEvaluation{
98-
QueryConfigID: q.ID,
99-
QueryName: q.QueryName,
100-
Hits: int64(res.Count),
101-
Status: status,
102-
ErrorMessage: errMsg,
103-
Evidence: evidence,
102+
QueryConfigID: q.ID,
103+
QueryName: q.QueryName,
104+
EvaluationRule: q.EvaluationRule,
105+
RuleValue: q.RuleValue,
106+
Hits: int64(res.Count),
107+
Status: status,
108+
ErrorMessage: errMsg,
109+
Evidence: evidence,
104110
}
105111
}
106112

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package models
22

33
type QueryEvaluation struct {
4-
QueryConfigID int64 `json:"queryConfigId"`
5-
QueryName string `json:"queryName"`
6-
Hits int64 `json:"hits"`
7-
Status QueryEvaluationStatus `json:"status"`
8-
ErrorMessage *string `json:"errorMessage,omitempty"`
9-
Evidence []map[string]any `json:"evidence,omitempty"`
4+
QueryConfigID int64 `json:"queryConfigId"`
5+
QueryName string `json:"queryName"`
6+
EvaluationRule EvaluationRule `json:"evaluationRule"`
7+
RuleValue *int `json:"ruleValue,omitempty"`
8+
Hits int64 `json:"hits"`
9+
Status QueryEvaluationStatus `json:"status"`
10+
ErrorMessage *string `json:"errorMessage,omitempty"`
11+
Evidence []map[string]any `json:"evidence,omitempty"`
1012
}

0 commit comments

Comments
 (0)