import sqlalchemy as sa from sqlalchemy.orm import selectinload from campaigns.connectors.db import Repository from campaigns.meta.models import FacebookAssociation, FacebookPage class FacebookAssociationRepository(Repository[FacebookAssociation]): default_options = ( selectinload(FacebookAssociation.pages).selectinload(FacebookPage.labels), ) async def get_by_identity_id_or_none( self, *, identity_id: str ) -> FacebookAssociation | None: query = ( sa.select(FacebookAssociation) .where(FacebookAssociation.orchard_identity_id == identity_id) .options(*self.default_options) ) result = await self.db.session.execute(query) return result.scalar_one_or_none()