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