from collections.abc import Sequence import sqlalchemy as sa from email_campaigns.adapters.db import Repository from email_campaigns.profile.models import Profile class ProfileRepository(Repository[Profile]): def find_by_emails(self, emails: set[str]) -> Sequence[Profile]: query = self.db.query_from_template( "find-profile-for-emails.sql", context={"emails": emails}, ) result = self.db.session.execute(sa.select(Profile).from_statement(query)) return result.scalars().all()