Skip to content

Commit 02f0728

Browse files
fix bug with nested subqueries
1 parent 1299da2 commit 02f0728

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

src/_incydr_sdk/queries/file_events.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ class FilterGroup(BaseModel):
9292

9393
class FilterGroupV2(BaseModel):
9494
subgroupClause: str = "AND"
95-
subgroups: List[Union[FilterGroup, FilterGroupV2]]
95+
subgroups: List[Union[FilterGroupV2, FilterGroup]]
9696

9797

9898
class Query(Model):
@@ -373,7 +373,7 @@ def subquery(self, subgroup_query: EventQuery):
373373
self.groups.append(
374374
FilterGroupV2(
375375
subgroupClause=subgroup_query.group_clause,
376-
subgroups=[x for x in subgroup_query.groups],
376+
subgroups=subgroup_query.groups,
377377
)
378378
)
379379
return self

tests/queries/test_event_query.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,7 @@ def test_date_range_filter_creates_correct_filter(start_timestamp):
360360
assert q.groups.pop() == expected
361361

362362

363-
def test_subgroup_creates_expected_filter_subgroup():
363+
def test_subquery_creates_expected_filter_subgroup():
364364
subgroup_q = (
365365
EventQuery()
366366
.matches_any()
@@ -377,3 +377,14 @@ def test_subgroup_creates_expected_filter_subgroup():
377377
assert q.group_clause == "AND"
378378
assert q.groups[0].subgroupClause == "OR"
379379
assert q.groups[0].subgroups[0] == expected
380+
381+
382+
def test_subquery_handles_nested_subquery():
383+
q = EventQuery().subquery(
384+
EventQuery().subquery(EventQuery().equals("term", "value"))
385+
)
386+
assert isinstance(q.groups[0], FilterGroupV2)
387+
assert isinstance(q.groups[0].subgroups[0], FilterGroupV2)
388+
assert isinstance(q.groups[0].subgroups[0].subgroups[0], FilterGroup)
389+
assert q.groups[0].subgroups[0].subgroups[0].filters[0].term == "term"
390+
assert q.groups[0].subgroups[0].subgroups[0].filters[0].value == "value"

0 commit comments

Comments
 (0)