import sqlalchemy as sa from ows_text_campaigns.adapters.db import Repository from ows_text_campaigns.campaigns.enums import MessageSendQueueStatus from ows_text_campaigns.campaigns.models import MessageSendQueue class MessageSendQueueRepository(Repository[MessageSendQueue]): def get_processing_by_campaign_id( self, campaign_id: str ) -> MessageSendQueue | None: query = ( sa.select(MessageSendQueue) .where( MessageSendQueue.campaign_id == campaign_id, MessageSendQueue.status == MessageSendQueueStatus.PROCESSING, ) .limit(1) ) result = self.db.session.execute(query) return result.scalar_one_or_none()