import sqlalchemy as sa from audience_common.auth.account import Account from campaigns.connectors.db import Repository from campaigns.meta.models import FacebookPageLabel class FacebookPageLabelRepository(Repository[FacebookPageLabel]): async def find_by_page_ids_and_account( self, *, page_ids: list[str], account: Account ) -> list[FacebookPageLabel]: if not page_ids: return [] query = sa.select(FacebookPageLabel).where( sa.and_( FacebookPageLabel.page_id.in_(page_ids), FacebookPageLabel.vendor_id == account.vendor_id, FacebookPageLabel.subaccount_id == account.subaccount_id if account.subaccount_id is not None else FacebookPageLabel.subaccount_id.is_(None), ) ) result = await self.db.session.execute(query) return list(result.scalars().all())