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