Skip to content

Commit b41d8e6

Browse files
scastillo-jpJobzi
authored andcommitted
feat: TT-404 add method get_by_id and get all in _data_persistence
1 parent b6aa05c commit b41d8e6

File tree

6 files changed

+37
-23
lines changed

6 files changed

+37
-23
lines changed

V2/serverless.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,14 +77,14 @@ functions:
7777
route: activities/
7878
authLevel: anonymous
7979

80-
get_activities:
80+
get_time_entries:
8181
handler: time_tracker/time_entries/interface.get_time_entries
8282
events:
8383
- http: true
8484
x-azure-settings:
8585
methods:
8686
- GET
87-
route: activities/{id:?}
87+
route: time_entries/{id:?}
8888
authLevel: anonymous
8989

9090

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
from ._time_entries import create_time_entry, get_time_entries
1+
from ._time_entries import create_time_entry
2+
from ._time_entries import get_time_entries

V2/time_tracker/time_entries/_application/_time_entries/_get_time_entries.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,13 @@
33

44
import azure.functions as func
55
import json
6-
import logging
76

87
JSON_PATH = (
98
'time_entries/_infrastructure/_data_persistence/time_entries_data.json'
109
)
1110

1211
def get_time_entries(req: func.HttpRequest) -> func.HttpResponse:
13-
logging.info(
14-
'Python HTTP trigger function processed a request to get an activity.'
15-
)
16-
# WIP
12+
1713
time_entry_id = req.route_params.get('id')
1814
status_code = 200
1915

@@ -51,5 +47,5 @@ def _get_all() -> str:
5147

5248

5349
def _create_time_entry_service(path: str):
54-
activity_json = TimeEntriesJsonDao(path)
55-
return TimeEntryService(activity_json)
50+
time_entry_json = TimeEntriesJsonDao(path)
51+
return TimeEntryService(time_entry_json)

V2/time_tracker/time_entries/_domain/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,6 @@
33
from ._services import TimeEntryService
44
from ._use_cases import (
55
CreateTimeEntryUseCase,
6+
GetTimeEntriesUseCase,
7+
GetTimeEntryUseCase
68
)

V2/time_tracker/time_entries/_domain/_persistence_contracts/_time_entries_dao.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,6 @@ def get_by_id(self, id: str) -> TimeEntry:
1212
def get_all(self) -> typing.List[TimeEntry]:
1313
pass
1414

15+
@abc.abstractmethod
1516
def create(self, time_entry_data: dict) -> TimeEntry:
1617
pass

V2/time_tracker/time_entries/_infrastructure/_data_persistence/_time_entries_dao.py

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,25 @@
66

77
class TimeEntriesJsonDao(TimeEntriesDao):
88

9-
def __init__(self, json_data_file_path: str):
10-
self.json_data_file_path = json_data_file_path
11-
self.time_entry_key = [field.name for field in dataclasses.fields(TimeEntry)]
9+
def __init__(self, json_data_file_path: str):
10+
self.json_data_file_path = json_data_file_path
11+
self.time_entry_key = [field.name for field in dataclasses.fields(TimeEntry)]
1212

13-
def create(self, time_entry_data: dict) -> TimeEntry:
13+
def get_by_id(self, id: str) -> TimeEntry:
14+
time_entry = {
15+
time_entry.get('id'): time_entry
16+
for time_entry in self.__get_time_entries_from_file()
17+
}.get(id)
18+
19+
return self.__create_time_entry_dto(time_entry) if time_entry else None
20+
21+
def get_all(self) -> typing.List[TimeEntry]:
22+
return [
23+
self.__create_time_entry_dto(activity)
24+
for activity in self.__get_time_entries_from_file()
25+
]
26+
27+
def create(self, time_entry_data: dict) -> TimeEntry:
1428
time_entries = self.__get_time_entries_from_file()
1529
time_entries.append(time_entry_data)
1630

@@ -22,17 +36,17 @@ def create(self, time_entry_data: dict) -> TimeEntry:
2236
except FileNotFoundError:
2337
print("Can not create activity")
2438

25-
def __get_time_entries_from_file(self) -> typing.List[dict]:
26-
try:
27-
file = open(self.json_data_file_path)
28-
time_entries = json.load(file)
29-
file.close()
39+
def __get_time_entries_from_file(self) -> typing.List[dict]:
40+
try:
41+
file = open(self.json_data_file_path)
42+
time_entries = json.load(file)
43+
file.close()
3044

31-
return time_entries
45+
return time_entries
3246

33-
except FileNotFoundError:
34-
return []
47+
except FileNotFoundError:
48+
return []
3549

36-
def __create_time_entry_dto(self, time_entry: dict) -> TimeEntry:
50+
def __create_time_entry_dto(self, time_entry: dict) -> TimeEntry:
3751
time_entry = {key: time_entry.get(key) for key in self.time_entry_key}
3852
return TimeEntry(**time_entry)

0 commit comments

Comments
 (0)