import sqlalchemy as sa from sqlalchemy.orm import joinedload from dmp.adapters.db import Repository from dmp.audiences.models import AudienceShare from dmp.meta.models import MetaAudience class MetaAudienceRepository(Repository[MetaAudience]): default_options = [ joinedload(MetaAudience.share).options( joinedload(AudienceShare.audience), joinedload(AudienceShare.snapshot), ), joinedload(MetaAudience.ad_account), ] def get_by_share_id(self, share_id: str) -> MetaAudience | None: query = ( sa.select(MetaAudience) .where(MetaAudience.share_id == share_id) .options(*self.default_options) ) result = self.db.session.execute(query) return result.scalar_one_or_none()