from api.application.abstractions.transaction import TransactionContextManager from api.application.contracts.company.company_request import \ CompanyByOwnerEmail from api.application.contracts.company.company_response import \ CompanyBaseResponse from api.domain.company.repository import CompanyRepository class GetCompaniesByOwnerEmail: def __init__( self, transaction: TransactionContextManager, company_repository: CompanyRepository, ) -> None: self.company_repository = company_repository self.transaction = transaction async def execute(self, request: CompanyByOwnerEmail) -> list[CompanyBaseResponse]: async with self.transaction: companies = await self.company_repository.get_companies_by_owner_email( filter={"email": request.email} ) return [ CompanyBaseResponse(name=comp.name.value, email=comp.email.value) for comp in companies ]