LogicGoInfotechSpaces commited on
Commit
1b0a7c7
·
verified ·
1 Parent(s): 4035248

Update app/api/routes.py

Browse files
Files changed (1) hide show
  1. app/api/routes.py +13 -6
app/api/routes.py CHANGED
@@ -2,21 +2,22 @@ import time
2
  from typing import Any
3
 
4
  from fastapi import APIRouter, Depends, HTTPException
 
5
 
6
  from app.dependencies import get_api_logger, get_category_service
7
- from app.schemas.categories import CategorizeRequest, CategoryPrediction
8
  from app.services.autocategorizer import AutoCategoryService
9
  from app.services.api_logger import ApiLogger
10
 
11
  router = APIRouter()
12
 
13
 
14
- @router.post("/categorize", response_model=CategoryPrediction, summary="Categorize a transaction note")
15
  async def categorize_transaction(
16
  payload: CategorizeRequest,
17
  service: AutoCategoryService = Depends(get_category_service),
18
  api_logger: ApiLogger = Depends(get_api_logger),
19
- ) -> CategoryPrediction:
20
  started_at = time.monotonic()
21
  try:
22
  result = await service.categorize(payload.notes)
@@ -26,7 +27,7 @@ async def categorize_transaction(
26
  response_time=time.monotonic() - started_at,
27
  user_id=payload.user_id,
28
  )
29
- return result
30
  except HTTPException as exc:
31
  await api_logger.log_categorization(
32
  name="Auto Expense Categorization",
@@ -35,7 +36,10 @@ async def categorize_transaction(
35
  user_id=payload.user_id,
36
  error_message=_normalize_error_detail(exc.detail),
37
  )
38
- raise
 
 
 
39
  except Exception as exc:
40
  await api_logger.log_categorization(
41
  name="Auto Expense Categorization",
@@ -44,7 +48,10 @@ async def categorize_transaction(
44
  user_id=payload.user_id,
45
  error_message=str(exc),
46
  )
47
- raise
 
 
 
48
 
49
 
50
  def _normalize_error_detail(detail: Any) -> str:
 
2
  from typing import Any
3
 
4
  from fastapi import APIRouter, Depends, HTTPException
5
+ from fastapi.responses import JSONResponse
6
 
7
  from app.dependencies import get_api_logger, get_category_service
8
+ from app.schemas.categories import CategorizeRequest, CategorizeResponse
9
  from app.services.autocategorizer import AutoCategoryService
10
  from app.services.api_logger import ApiLogger
11
 
12
  router = APIRouter()
13
 
14
 
15
+ @router.post("/categorize", response_model=CategorizeResponse, summary="Categorize a transaction note")
16
  async def categorize_transaction(
17
  payload: CategorizeRequest,
18
  service: AutoCategoryService = Depends(get_category_service),
19
  api_logger: ApiLogger = Depends(get_api_logger),
20
+ ) -> CategorizeResponse | JSONResponse:
21
  started_at = time.monotonic()
22
  try:
23
  result = await service.categorize(payload.notes)
 
27
  response_time=time.monotonic() - started_at,
28
  user_id=payload.user_id,
29
  )
30
+ return CategorizeResponse(status="success", data=result)
31
  except HTTPException as exc:
32
  await api_logger.log_categorization(
33
  name="Auto Expense Categorization",
 
36
  user_id=payload.user_id,
37
  error_message=_normalize_error_detail(exc.detail),
38
  )
39
+ return JSONResponse(
40
+ status_code=exc.status_code,
41
+ content={"status": "fail", "message": _normalize_error_detail(exc.detail)},
42
+ )
43
  except Exception as exc:
44
  await api_logger.log_categorization(
45
  name="Auto Expense Categorization",
 
48
  user_id=payload.user_id,
49
  error_message=str(exc),
50
  )
51
+ return JSONResponse(
52
+ status_code=500,
53
+ content={"status": "fail", "message": "Internal server error"},
54
+ )
55
 
56
 
57
  def _normalize_error_detail(detail: Any) -> str: