Skip to content

Commit 3b48f4d

Browse files
committed
fix(be): filter list of events by instance set id
After c16369d0, list filters only work when done against a direct field of the model being listed. This commit changes the event service to filter events by instance set id wheenever an instance id or journey id filter is passed.
1 parent b369040 commit 3b48f4d

2 files changed

Lines changed: 7 additions & 5 deletions

File tree

common/entity_services/event_service.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,12 @@ def get_events_with_rules(*, rules: ListRules, filters: ProjectEventFilters) ->
3737
filter_list: list[object] = [EventEntity.project << filters.project_ids]
3838

3939
if filters.instance_ids or filters.journey_ids:
40-
query = query.join(InstanceSet).join(InstancesInstanceSets).join(Instance).switch(EventEntity)
40+
instance_set_subquery = InstanceSet.select(InstanceSet.id).join(InstancesInstanceSets).join(Instance)
4141
if filters.journey_ids:
42-
filter_list.append(Instance.journey << filters.journey_ids)
42+
instance_set_subquery = instance_set_subquery.where(Instance.journey << filters.journey_ids)
4343
if filters.instance_ids:
44-
filter_list.append(Instance.id << filters.instance_ids)
44+
instance_set_subquery = instance_set_subquery.where(Instance.id << filters.instance_ids)
45+
query = query.where(EventEntity.instance_set.in_(instance_set_subquery))
4546
if filters.event_types:
4647
filter_list.append(EventEntity.type << filters.event_types)
4748
if filters.component_ids:
@@ -53,9 +54,9 @@ def get_events_with_rules(*, rules: ListRules, filters: ProjectEventFilters) ->
5354
if filters.task_ids:
5455
filter_list.append(EventEntity.task << filters.task_ids)
5556
if filters.date_range_start:
56-
filter_list.append(EventEntity.timestamp >= EventEntity.timestamp.db_value(filters.date_range_start))
57+
filter_list.append(EventEntity.timestamp >= filters.date_range_start)
5758
if filters.date_range_end:
58-
filter_list.append(EventEntity.timestamp < EventEntity.timestamp.db_value(filters.date_range_end))
59+
filter_list.append(EventEntity.timestamp < filters.date_range_end)
5960

6061
query = query.where(*filter_list)
6162
page = Page[EventEntity].get_paginated_results(query, EventEntity.timestamp, rules)

testlib/fixtures/entities.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -621,6 +621,7 @@ def event_entity_2(test_db, dataset):
621621
version=EventVersion.V2,
622622
type=ApiEventType.DATASET_OPERATION,
623623
created_timestamp=datetime(2024, 1, 20, 9, 55, 0, tzinfo=timezone.utc),
624+
timestamp=datetime(2024, 1, 20, 9, 55, 0, tzinfo=timezone.utc),
624625
project=dataset.project_id,
625626
component=dataset,
626627
v2_payload={},

0 commit comments

Comments
 (0)