Skip to content

Commit 167d087

Browse files
committed
adding relative time to MONTH_EQ, YEAR_EQ
1 parent a779208 commit 167d087

2 files changed

Lines changed: 36 additions & 4 deletions

File tree

‎helper.go‎

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -287,11 +287,29 @@ func compareTimePart(actual any, expected any, op Operator) (bool, error) {
287287
if !ok {
288288
return false, newError(errType, actual)
289289
}
290-
value, err := toFloat(expected)
291-
if err != nil {
292-
return false, err
290+
291+
var target int
292+
switch v := expected.(type) {
293+
case string:
294+
resolved, err := resolveExpectedTime(v, time.Now())
295+
if err != nil {
296+
return false, err
297+
}
298+
switch op {
299+
case YearEq:
300+
target = resolved.Year()
301+
case MonthEq:
302+
target = int(resolved.Month())
303+
default:
304+
return false, nil
305+
}
306+
default:
307+
value, err := toFloat(expected)
308+
if err != nil {
309+
return false, err
310+
}
311+
target = int(value)
293312
}
294-
target := int(value)
295313

296314
switch op {
297315
case YearEq:

‎rulesengine_test.go‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,20 @@ var (
368368
inputData: map[string]any{"startDate": relativeTime},
369369
expResult: RuleResult{Result: true},
370370
},
371+
{
372+
ruleNodes: Rule{
373+
Operator: YearEq, Field: "startDate", Value: "thisYear-1",
374+
},
375+
inputData: map[string]any{"startDate": relativeTime.AddDate(-1, 0, 0)},
376+
expResult: RuleResult{Result: true},
377+
},
378+
{
379+
ruleNodes: Rule{
380+
Operator: MonthEq, Field: "startDate", Value: "thisMonth",
381+
},
382+
inputData: map[string]any{"startDate": time.Date(relativeNow.Year(), relativeNow.Month(), 1, 12, 0, 0, 0, relativeNow.Location())},
383+
expResult: RuleResult{Result: true},
384+
},
371385
{
372386
ruleNodes: Rule{
373387
Operator: WithinLast, Field: "startDate", Value: last10Sec,

0 commit comments

Comments
 (0)