Skip to content

Commit 65505f0

Browse files
committed
feat: TT-407 get latest entries added without params
1 parent de18020 commit 65505f0

File tree

17 files changed

+211
-4
lines changed

17 files changed

+211
-4
lines changed

V2/create_activity/function.json

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"disabled": false,
3+
"bindings": [
4+
{
5+
"type": "httpTrigger",
6+
"direction": "in",
7+
"name": "req",
8+
"route": "activities/",
9+
"authLevel": "anonymous",
10+
"methods": [
11+
"POST"
12+
]
13+
},
14+
{
15+
"type": "http",
16+
"direction": "out",
17+
"name": "$return"
18+
}
19+
],
20+
"entryPoint": "create_activity",
21+
"scriptFile": "../time_tracker/activities/interface.py"
22+
}

V2/delete_activity/function.json

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"disabled": false,
3+
"bindings": [
4+
{
5+
"type": "httpTrigger",
6+
"direction": "in",
7+
"name": "req",
8+
"route": "activities/{id}",
9+
"authLevel": "anonymous",
10+
"methods": [
11+
"DELETE"
12+
]
13+
},
14+
{
15+
"type": "http",
16+
"direction": "out",
17+
"name": "$return"
18+
}
19+
],
20+
"entryPoint": "delete_activity",
21+
"scriptFile": "../time_tracker/activities/interface.py"
22+
}

V2/delete_time_entry/function.json

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"disabled": false,
3+
"bindings": [
4+
{
5+
"type": "httpTrigger",
6+
"direction": "in",
7+
"name": "req",
8+
"route": "time-entries/{id}",
9+
"authLevel": "anonymous",
10+
"methods": [
11+
"DELETE"
12+
]
13+
},
14+
{
15+
"type": "http",
16+
"direction": "out",
17+
"name": "$return"
18+
}
19+
],
20+
"entryPoint": "delete_time_entry",
21+
"scriptFile": "../time_tracker/time_entries/interface.py"
22+
}

V2/get_activities/function.json

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"disabled": false,
3+
"bindings": [
4+
{
5+
"type": "httpTrigger",
6+
"direction": "in",
7+
"name": "req",
8+
"route": "activities/{id:?}",
9+
"authLevel": "anonymous",
10+
"methods": [
11+
"GET"
12+
]
13+
},
14+
{
15+
"type": "http",
16+
"direction": "out",
17+
"name": "$return"
18+
}
19+
],
20+
"entryPoint": "get_activities",
21+
"scriptFile": "../time_tracker/activities/interface.py"
22+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"disabled": false,
3+
"bindings": [
4+
{
5+
"type": "httpTrigger",
6+
"direction": "in",
7+
"name": "req",
8+
"route": "time-entries/latest",
9+
"authLevel": "anonymous",
10+
"methods": [
11+
"GET"
12+
]
13+
},
14+
{
15+
"type": "http",
16+
"direction": "out",
17+
"name": "$return"
18+
}
19+
],
20+
"entryPoint": "get_latest_entries",
21+
"scriptFile": "../time_tracker/time_entries/interface.py"
22+
}

V2/serverless.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,3 +86,13 @@ functions:
8686
- DELETE
8787
route: time-entries/{id}
8888
authLevel: anonymous
89+
90+
get_latest_time_entries:
91+
handler: time_tracker/time_entries/interface.get_latest_entries
92+
events:
93+
- http: true
94+
x-azure-settings:
95+
methods:
96+
- GET
97+
route: time-entries/latest
98+
authLevel: anonymous
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# flake8: noqa
2-
from ._time_entries import delete_time_entry
2+
from ._time_entries import delete_time_entry, get_latest_entries
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
# flake8: noqa
2-
from ._delete_time_entry import delete_time_entry
2+
from ._delete_time_entry import delete_time_entry
3+
from ._get_latest_entries import get_latest_entries
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import json
2+
3+
import azure.functions as func
4+
5+
from ... import _domain
6+
from ... import _infrastructure
7+
from time_tracker._infrastructure import DB
8+
9+
DATABASE = DB()
10+
11+
12+
def get_latest_entries(req: func.HttpRequest) -> func.HttpResponse:
13+
time_entry_dao = _infrastructure.TimeEntriesSQLDao(DATABASE)
14+
time_entry_service = _domain.TimeEntryService(time_entry_dao)
15+
use_case = _domain._use_cases.GetLastTimeEntryUseCase(time_entry_service)
16+
17+
try:
18+
time_entries = use_case.get_latest_entries()
19+
20+
if not time_entries or len(time_entries) == 0:
21+
return func.HttpResponse(
22+
body="Not found",
23+
status_code=404,
24+
mimetype="application/json"
25+
)
26+
27+
return func.HttpResponse(
28+
body=json.dumps(time_entries, default=str),
29+
status_code=200,
30+
mimetype="application/json",
31+
)
32+
33+
except ValueError:
34+
return func.HttpResponse(
35+
body=b"Invalid Format ID",
36+
status_code=400,
37+
mimetype="application/json"
38+
)

V2/time_tracker/time_entries/_domain/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,6 @@
33
from ._persistence_contracts import TimeEntriesDao
44
from ._services import TimeEntryService
55
from ._use_cases import (
6-
DeleteTimeEntryUseCase
6+
DeleteTimeEntryUseCase,
7+
GetLastTimeEntryUseCase
78
)

0 commit comments

Comments
 (0)