This commit is contained in:
Eden Kirin
2023-08-27 13:35:29 +02:00
parent 03c8aaa312
commit 7b16c2f606
6 changed files with 156 additions and 56 deletions

View File

@ -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),