"""Parent Company Model.""" from sqlalchemy import Column, Integer, String from sqlalchemy.orm import joinedload, relationship from account.connectors import mysql class ParentCompany(mysql.BaseModel): """ParentCompany DB Model.""" __tablename__ = 'parent_company' id = Column(Integer, primary_key=True) name = Column(String) uuid = Column(String) display_name = Column(String) company_brands = relationship('CompanyBrand', back_populates='parent_company') def to_dict(self): """Get a dict representation of ParentCompany.""" return { 'id': self.id, 'name': self.name, 'uuid': self.uuid, 'display_name': self.display_name, } def get_parent_companies() -> list[ParentCompany]: """Get all parent companies.""" with mysql.session_scope(read_only=True) as session: return session.query(ParentCompany).all() def get_parent_company(uuid: str) -> 'ParentCompany | None': """Get a single parent company by UUID.""" with mysql.session_scope(read_only=True) as session: return session.query(ParentCompany).filter(ParentCompany.uuid == uuid).first() def get_parent_company_company_brands(uuid: str) -> 'ParentCompany | None': """Get a single parent company with its company brands eagerly loaded.""" with mysql.session_scope(read_only=True) as session: return ( session.query(ParentCompany) .options(joinedload(ParentCompany.company_brands)) .filter(ParentCompany.uuid == uuid) .first() )