Skip to content

Commit ed3b150

Browse files
committed
refactor: TT-182 create method to get all projects with list of ids
1 parent bd17303 commit ed3b150

File tree

2 files changed

+13
-44
lines changed

2 files changed

+13
-44
lines changed

tests/time_tracker_api/projects/projects_model_test.py

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,36 +8,32 @@
88
)
99

1010

11-
@patch(
12-
'time_tracker_api.projects.projects_model.ProjectCosmosDBRepository.create_sql_condition_for_visibility'
13-
)
1411
@patch(
1512
'time_tracker_api.projects.projects_model.ProjectCosmosDBRepository.find_partition_key_value'
1613
)
17-
def test_find_all_with_customer_id_in_list(
14+
def test_find_all_v2(
1815
find_partition_key_value_mock,
19-
create_sql_condition_for_visibility_mock,
2016
event_context: EventContext,
2117
project_repository: ProjectCosmosDBRepository,
2218
):
2319
expected_item = {
2420
'customer_id': 'id1',
21+
'id': 'id2',
2522
'name': 'testing',
2623
'description': 'do some testing',
2724
'project_type_id': "id2",
2825
'tenant_id': 'tenantid1',
2926
}
30-
3127
query_items_mock = Mock(return_value=[expected_item])
3228
project_repository.container = Mock()
3329
project_repository.container.query_items = query_items_mock
3430

35-
result = project_repository.find_all_with_customer_id_in_list(event_context, [expected_item])
36-
37-
create_sql_condition_for_visibility_mock.assert_called_once()
31+
result = project_repository.find_all_v2(
32+
event_context,
33+
['id'],
34+
['customer_id']
35+
)
3836
find_partition_key_value_mock.assert_called_once()
39-
query_items_mock.assert_called_once()
40-
4137
assert len(result) == 1
4238
project = result[0]
4339
assert isinstance(project, ProjectCosmosDBModel)

time_tracker_api/projects/projects_model.py

Lines changed: 6 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from time_tracker_api.database import CRUDDao, APICosmosDBDao
99
from typing import List, Callable
1010
from commons.data_access_layer.database import EventContext
11-
from utils.repository import convert_list_to_tuple_string, create_sql_in_condition
11+
from utils.repository import create_sql_in_condition
1212
from time_tracker_api.customers.customers_model import (
1313
create_dao as customers_create_dao,
1414
)
@@ -66,48 +66,21 @@ def __init__(self):
6666
mapper=ProjectCosmosDBModel,
6767
)
6868

69-
def find_all_with_id_in_list(
69+
def find_all_v2(
7070
self,
7171
event_context: EventContext,
72-
ids_list: List[str] = None,
72+
ids_list: List[str],
7373
customers_ids_list: List[str] = None,
7474
visible_only=True,
7575
mapper: Callable = None,
7676
):
7777
query_builder = (CosmosDBQueryBuilder()
7878
.add_sql_in_condition("id",ids_list)
7979
.add_sql_in_condition("customer_id",customers_ids_list)
80-
.add_sql_visibility_condition(visibility_only)
80+
.add_sql_visibility_condition(visible_only)
8181
.build()
8282
)
8383
query_str = query_builder.get_query()
84-
tenant_id_value = self.find_partition_key_value(event_context)
85-
86-
result = self.container.query_items(
87-
query=query_str,
88-
partition_key=tenant_id_value,
89-
)
90-
function_mapper = self.get_mapper_or_dict(mapper)
91-
return list(map(function_mapper, result))
92-
93-
94-
def find_all_with_customer_id_in_list(
95-
self,
96-
event_context: EventContext,
97-
customer_ids_list: List[str],
98-
visible_only=True,
99-
mapper: Callable = None,
100-
):
101-
visibility = self.create_sql_condition_for_visibility(visible_only)
102-
query_str = """
103-
SELECT * FROM c
104-
WHERE {condition}
105-
{visibility_condition}
106-
""".format(
107-
condition=create_sql_in_condition("customer_id", customer_ids_list),
108-
visibility_condition=visibility,
109-
)
110-
11184
tenant_id_value = self.find_partition_key_value(event_context)
11285
result = self.container.query_items(
11386
query=query_str,
@@ -149,9 +122,9 @@ def get_all(self, conditions: dict = None, **kwargs) -> list:
149122
add_customer_name_to_projects(projects, customers)
150123
return projects
151124

152-
def get_all_with_id_in_list(self,id_list,):
125+
def get_all_with_id_in_list(self,id_list):
153126
event_ctx = self.create_event_context("read-many")
154-
return self.repository.find_all_with_id_in_list(event_ctx, id_list)
127+
return self.repository.find_all_v2(event_ctx, id_list)
155128

156129

157130

0 commit comments

Comments
 (0)