Done
This commit is contained in:
@ -5,6 +5,7 @@ from litestar.contrib.repository.filters import LimitOffset, SearchFilter
|
||||
from litestar.di import Provide
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from app.domain.company import Company
|
||||
from app.domain.machine import (
|
||||
Machine,
|
||||
MachineReadDTO,
|
||||
@ -12,6 +13,7 @@ from app.domain.machine import (
|
||||
Repository,
|
||||
Service,
|
||||
)
|
||||
from app.lib.filters import ExactFilter
|
||||
from app.lib.responses import ObjectListResponse, ObjectResponse
|
||||
|
||||
if TYPE_CHECKING:
|
||||
@ -21,15 +23,24 @@ if TYPE_CHECKING:
|
||||
DETAIL_ROUTE = "/{machine_id:int}"
|
||||
|
||||
|
||||
def provides_service(db_session: AsyncSession) -> Service:
|
||||
async def provides_service(db_session: AsyncSession, company_id: int) -> Service:
|
||||
"""Constructs repository and service objects for the request."""
|
||||
return Service(Repository(session=db_session))
|
||||
from app.controllers.company import provides_service
|
||||
company_service = provides_service(db_session)
|
||||
company = await company_service.get(company_id)
|
||||
return Service(Repository(session=db_session, company=company))
|
||||
|
||||
|
||||
async def get_company(db_session: AsyncSession, company_id: int) -> Company:
|
||||
from app.controllers.company import provides_service
|
||||
company_service = provides_service(db_session)
|
||||
return await company_service.get(company_id)
|
||||
|
||||
|
||||
class MachineController(Controller):
|
||||
dto = MachineWriteDTO
|
||||
return_dto = MachineReadDTO
|
||||
path = "/machines"
|
||||
path = "/company/{company_id:int}/machines"
|
||||
dependencies = {
|
||||
"service": Provide(provides_service, sync_to_thread=False),
|
||||
}
|
||||
@ -37,7 +48,9 @@ class MachineController(Controller):
|
||||
|
||||
@get()
|
||||
async def get_machines(
|
||||
self, service: Service, search: Optional[str] = None
|
||||
self,
|
||||
service: Service,
|
||||
search: Optional[str] = None,
|
||||
) -> ObjectListResponse[Machine]:
|
||||
filters = [
|
||||
LimitOffset(limit=20, offset=0),
|
||||
|
||||
Reference in New Issue
Block a user