from sqlalchemy import text from sqlalchemy.ext.asyncio import AsyncSession from api.domain.company.model import Company, CompanyEmail, CompanyId, CompanyName from api.domain.company.repository import CompanyRepository class SqlAlchemyCompanyRepository(CompanyRepository): def __init__(self, session: AsyncSession) -> None: self.session = session # async def create_user(self, user: User) -> None: # stmt = text( # """INSERT INTO users (id, name, email, hashed_password) # VALUES(:id, :name, :email, :hashed_password) # """ # ) # await self.session.execute( # stmt, # { # "id": str(user.id.value), # "name": user.name.value, # "email": user.email.value, # "hashed_password": user.hashed_password, # }, # ) # async def get_companies_by_owner_email(self, filter: dict) -> list[Company]: stmt = text("""SELECT * FROM companies WHERE email = :val""") result = await self.session.execute(stmt, {"val": filter["email"]}) result = result.mappings().all() return [ Company( id=CompanyId(c.id), name=CompanyName(c.name), email=CompanyEmail(c.email), ) for c in result ] # async def get_users(self) -> list[User]: # return []