from collections.abc import Sequence import sqlalchemy as sa from sqlalchemy.orm import selectinload from email_campaigns.adapters.db import PgRepository from email_campaigns.audiences.models import Audience class AudienceRepository(PgRepository[Audience]): default_options = (selectinload(Audience.fandata_lists),) def find_by_ids(self, ids: list[str]) -> Sequence[Audience]: if not ids: return [] query = ( sa.select(Audience) .where(Audience.id.in_(ids)) .options(*self.default_options) ) result = self.db.session.execute(query) return result.scalars().all()