Skip to content

Commit ede5c4c

Browse files
PabloPablo
authored andcommitted
fix: TT-220 adjustments according reviewers suggestions
1 parent 8a2682a commit ede5c4c

File tree

3 files changed

+7
-61
lines changed

3 files changed

+7
-61
lines changed

tests/utils/query_builder_test.py

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -331,27 +331,3 @@ def test_add_sql_not_in_condition(
331331
)
332332
assert len(query_builder.where_conditions) == len(expected_not_in_list)
333333
assert query_builder.where_conditions == expected_not_in_list
334-
335-
336-
@pytest.mark.parametrize(
337-
"date_range,expected_value,expected_expression",
338-
[
339-
(
340-
{
341-
'start_date': '2021-05-09T00:00:00-05:00',
342-
'end_date': '2021-05-15T23:59:59-05:00',
343-
},
344-
{
345-
'start_date': '2021-05-09T00:00:00-05:00',
346-
'end_date': '2021-05-15T23:59:59-05:00',
347-
},
348-
"((c.start_date BETWEEN @start_date AND @end_date) OR (c.end_date BETWEEN @start_date AND @end_date))",
349-
)
350-
],
351-
)
352-
def test_add_date_range(date_range, expected_value, expected_expression):
353-
query_builder = CosmosDBQueryBuilder().add_date_range(date_range)
354-
result = query_builder._CosmosDBQueryBuilder__build_date_range()
355-
356-
assert query_builder.date_range == expected_value
357-
assert result == expected_expression

time_tracker_api/time_entries/time_entries_repository.py

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -78,24 +78,18 @@ def count(
7878
visible_only=True,
7979
**kwargs,
8080
):
81-
conditions = conditions if conditions else {}
82-
date_range = date_range if date_range else {}
83-
84-
date_range_params = self.generate_params(date_range)
85-
params = self.generate_params(conditions)
86-
params.extend(date_range_params)
87-
8881
query_builder = (
89-
CosmosDBQueryBuilder()
82+
TimeEntryQueryBuilder()
9083
.add_select_conditions(["VALUE COUNT(1)"])
9184
.add_sql_in_condition('owner_id', owner_ids)
9285
.add_sql_where_equal_condition(conditions)
9386
.add_sql_visibility_condition(visible_only)
94-
.add_date_range(date_range)
87+
.add_sql_date_range_condition(date_range)
9588
.build()
9689
)
9790

9891
query_str = query_builder.get_query()
92+
params = query_builder.get_parameters()
9993
tenant_id_value = self.find_partition_key_value(event_context)
10094
result = self.container.query_items(
10195
query=query_str,
@@ -109,11 +103,8 @@ def add_complementary_info(
109103
self, time_entries=None, max_count=None, exist_conditions=False
110104
):
111105
if time_entries:
112-
project_ids_set = set([x.project_id for x in time_entries])
113-
project_ids = list(project_ids_set)
114-
115-
activity_ids_set = set([x.activity_id for x in time_entries])
116-
activity_ids = list(activity_ids_set)
106+
project_ids = list(set([x.project_id for x in time_entries]))
107+
activity_ids = list(set([x.activity_id for x in time_entries]))
117108

118109
project_dao = projects_model.create_dao()
119110
projects = project_dao.get_all(
@@ -155,11 +146,11 @@ def find_all(
155146
date_range = date_range if date_range else {}
156147

157148
query_builder = (
158-
CosmosDBQueryBuilder()
149+
TimeEntryQueryBuilder()
159150
.add_sql_in_condition('owner_id', owner_ids)
160151
.add_sql_where_equal_condition(conditions)
161152
.add_sql_visibility_condition(visible_only)
162-
.add_date_range(date_range)
153+
.add_sql_date_range_condition(date_range)
163154
.add_sql_not_in_condition('owner_id', test_user_ids)
164155
.add_sql_order_by_condition('start_date', Order.DESC)
165156
.add_sql_limit_condition(max_count)

utils/query_builder.py

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ def __init__(self):
2020
self.limit = None
2121
self.offset = None
2222
self.order_by = None
23-
self.date_range = None
2423

2524
def add_select_conditions(self, columns: List[str] = None):
2625
columns = columns if columns else ["*"]
@@ -70,11 +69,6 @@ def add_sql_not_in_condition(
7069
self.where_conditions.append(f"c.{attribute} NOT IN {ids_values}")
7170
return self
7271

73-
def add_date_range(self, date_range: dict = None):
74-
if date_range:
75-
self.date_range = date_range
76-
return self
77-
7872
def __build_select(self):
7973
if len(self.select_conditions) < 1:
8074
self.select_conditions.append("*")
@@ -107,31 +101,16 @@ def __build_order_by(self):
107101
else:
108102
return ""
109103

110-
def __build_date_range(self):
111-
if self.date_range:
112-
self.parameters.append(
113-
{'name': '@start_date', 'value': self.date_range['start_date']}
114-
)
115-
self.parameters.append(
116-
{'name': '@end_date', 'value': self.date_range['end_date']}
117-
)
118-
and_keyword = "AND " if len(self.where_conditions) > 0 else ""
119-
return f"{and_keyword}((c.start_date BETWEEN @start_date AND @end_date) OR (c.end_date BETWEEN @start_date AND @end_date))"
120-
else:
121-
return ""
122-
123104
def build(self):
124105
self.query = """
125106
SELECT {select_conditions} FROM c
126107
{where_conditions}
127-
{date_range_condition}
128108
{order_by_condition}
129109
{offset_condition}
130110
{limit_condition}
131111
""".format(
132112
select_conditions=self.__build_select(),
133113
where_conditions=self.__build_where(),
134-
date_range_condition=self.__build_date_range(),
135114
order_by_condition=self.__build_order_by(),
136115
offset_condition=self.__build_offset(),
137116
limit_condition=self.__build_limit(),

0 commit comments

Comments
 (0)