22
33from fastapi import APIRouter , Depends
44from loguru import logger
5+ from sqlmodel import Session
56
67from config import Settings
78from src .app .ports .repositories .issues import IssueRepository
8- from src .app .repository import UnitOfWork as BaseUnitOfWork
99from src .app .usecases .analyze_issue import AnalyzeIssue
1010from src .domain .issue import Issue
1111from src .interface_adapters .exceptions import UnsupportedOperationException
1212from src .resource_adapters .persistence .in_memory .issues import InMemoryIssueRepository
13- from src .resource_adapters .persistence .in_memory .unit_of_work import (
14- UnitOfWork as InMemoryUnitOfWork ,
15- )
13+ from src .resource_adapters .persistence .sqlmodel .database import get_db
1614from src .resource_adapters .persistence .sqlmodel .issues import SQLModelIssueRepository
17- from src .resource_adapters .persistence .sqlmodel .unit_of_work import SQLModelUnitOfWork
1815
1916router = APIRouter ()
2017
2118
2219# https://fastapi.tiangolo.com/tutorial/dependencies/
23- async def configure_unit_of_work () -> BaseUnitOfWork :
24- execution_mode = Settings .get_settings ().execution_mode
25- if execution_mode == "in-memory" :
26- return InMemoryUnitOfWork ()
27- elif execution_mode == "sqlmodel" :
28- return SQLModelUnitOfWork (database_url = Settings .get_settings ().database_url )
29- else :
30- raise UnsupportedOperationException (
31- message = "Unsupported unit of work configuration" ,
32- detail = f"Execution mode '{ execution_mode } ' is not supported" ,
33- )
34-
35-
36- async def configure_repository () -> IssueRepository :
20+ def configure_repository (
21+ session : Annotated [Session , Depends (get_db )]
22+ #session: SessionDep,
23+ ) -> IssueRepository :
3724 execution_mode = Settings .get_settings ().execution_mode
3825 if execution_mode == "in-memory" :
3926 return InMemoryIssueRepository ()
4027 elif execution_mode == "sqlmodel" :
41- # For SQLModel, the repository is managed by the UnitOfWork
42- # This is just a placeholder that will be replaced
43- return SQLModelIssueRepository (None ) # type: ignore
28+ return SQLModelIssueRepository (session )
4429 else :
4530 raise UnsupportedOperationException (
4631 message = "Unsupported repository configuration" ,
@@ -49,18 +34,10 @@ async def configure_repository() -> IssueRepository:
4934
5035
5136@router .post ("/issues/{issue_number}/analyze" , response_model = Issue )
52- async def analyze_issue (
37+ def analyze_issue (
5338 issue_number : int ,
54- unit_of_work : Annotated [BaseUnitOfWork , Depends (configure_unit_of_work )],
55- repo : Annotated [IssueRepository , Depends (configure_repository )],
39+ repo : Annotated [IssueRepository , Depends (configure_repository )]
5640) -> Issue :
5741 logger .info (f"analyzing issue: { issue_number } " )
58-
59- # For SQLModel, we need to use the repository from the unit of work
60- if isinstance (unit_of_work , SQLModelUnitOfWork ):
61- repo = unit_of_work .issues
62-
63- use_case = AnalyzeIssue (
64- issue_number = issue_number , repo = repo , unit_of_work = unit_of_work
65- )
66- return await use_case .analyze ()
42+ use_case = AnalyzeIssue (issue_number = issue_number , repo = repo )
43+ return use_case .analyze ()
0 commit comments