Skip to content

Commit 8e74ee2

Browse files
committed
pydiatr-core updated & nested object result support added
1 parent 5fea398 commit 8e74ee2

File tree

5 files changed

+18
-13
lines changed

5 files changed

+18
-13
lines changed

app/resources/todo/usecases/get_todo_all.py

+11-6
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from pydiator_core.interfaces import BaseRequest, BaseResponse, BaseHandler, BaseCacheable, CacheType
33
from typing import List
44
from pydiator_core.mediatr import pydiator
5+
56
from app.data.todo.usecases.get_todo_all_data import GetTodoAllDataRequest
67

78

@@ -16,17 +17,21 @@ def get_cache_type(self) -> CacheType:
1617
return CacheType.DISTRIBUTED
1718

1819

19-
class GetTodoAllResponse(BaseModel, BaseResponse):
20+
class Todo(BaseModel):
2021
id: int = Field(...)
2122
title: str = Field(...)
2223

2324

25+
class GetTodoAllResponse(BaseModel, BaseResponse):
26+
items: List[Todo] = []
27+
28+
2429
class GetTodoAllUseCase(BaseHandler):
2530

26-
async def handle(self, req: GetTodoAllRequest) -> List[GetTodoAllResponse]:
27-
response = []
28-
data_response = await pydiator.send(GetTodoAllDataRequest())
29-
for d in data_response:
30-
response.append(GetTodoAllResponse(id=d.id, title=d.title))
31+
async def handle(self, req: GetTodoAllRequest) -> GetTodoAllResponse:
32+
response = GetTodoAllResponse()
33+
todo_data = await pydiator.send(GetTodoAllDataRequest())
34+
for item in todo_data:
35+
response.items.append(Todo(id=item.id, title=item.title))
3136

3237
return response

app/utils/config.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
REDIS_KEY_PREFIX = config('REDIS_KEY_PREFIX', str, 'fastapi_pydiator:')
1212

1313
DISTRIBUTED_CACHE_IS_ENABLED = config("DISTRIBUTED_CACHE_IS_ENABLED", bool, True)
14-
CACHE_PIPELINE_IS_ENABLED = config("CACHE_PIPELINE_IS_ENABLED", bool, True)
14+
CACHE_PIPELINE_IS_ENABLED = config("CACHE_PIPELINE_IS_ENABLED", bool, False)
1515
LOG_PIPELINE_IS_ENABLED = config("LOG_PIPELINE_IS_ENABLED", bool, True)
1616
TRACER_PIPELINE_IS_ENABLED = config("TRACER_PIPELINE_IS_ENABLED", bool, True)
1717
TRACER_IS_ENABLED = config('TRACER_IS_ENABLED', bool, True)

requirements.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
uvicorn==0.13.3
22
fastapi==0.65.2
33
fastapi-contrib==0.2.9
4-
pydiator-core==1.0.9
4+
pydiator-core==1.0.11
55
pydantic==1.7.4
66
redis==3.5.3
77

tests/integration/resources/todo/test_todo_resource.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class TestTodo:
55

66
def test_get_todo_all(self, test_app):
77
response = test_app.get("/v1/todos")
8-
items = response.json()
8+
items = response.json()["items"]
99

1010
assert response.status_code == HTTP_200_OK
1111
assert len(items) == 2

tests/unit/resources/todo/usecases/test_get_todo_all.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from app.data.todo.usecases.get_todo_all_data import GetTodoAllDataResponse
44
from pydiator_core.mediatr import pydiator
5-
from app.resources.todo.usecases.get_todo_all import GetTodoAllRequest, GetTodoAllUseCase, GetTodoAllResponse
5+
from app.resources.todo.usecases.get_todo_all import GetTodoAllRequest, GetTodoAllUseCase, GetTodoAllResponse, Todo
66
from tests.unit.base_test_case import BaseTestCase
77

88

@@ -21,7 +21,7 @@ def test_handle_return_list(self, mock_pydiator):
2121
mock_pydiator.send.side_effect = [self.async_return([GetTodoAllDataResponse(id=id_val, title=title_val)])]
2222

2323
request = GetTodoAllRequest(id=id_val)
24-
expected_response = [GetTodoAllResponse(id=id_val, title=title_val)]
24+
expected_response = GetTodoAllResponse(items=[Todo(id=id_val, title=title_val)])
2525

2626
# When
2727
response = self.async_loop(pydiator.send(request))
@@ -34,8 +34,8 @@ def test_handle_return_list(self, mock_pydiator):
3434
def test_handle_return_empty_list(self, mock_pydiator):
3535
# Given
3636
mock_pydiator.send.side_effect = [self.async_return([])]
37-
request = GetTodoAllRequest(id=1)
38-
expected_response = []
37+
request = GetTodoAllRequest()
38+
expected_response = GetTodoAllResponse()
3939

4040
# When
4141
response = self.async_loop(pydiator.send(request))

0 commit comments

Comments
 (0)