from database import get_db from dtos import to_db, to_db_existing_contact from models import SMSContact, SMSMessage as SMSDBMessage from schemas import SMSMessage from sqlalchemy.orm import joinedload def inbound_sms_handler(message: SMSMessage) -> None: db = next(get_db()) payload = None sms_contact_exists = db.query(SMSContact).filter(SMSContact.phone_number == message.data.attributes.to_number).first() if sms_contact_exists: payload = to_db_existing_contact(message) payload.to_number = sms_contact_exists.id else: payload = to_db(message) db.add(payload) db.commit() db.refresh(payload) def retrieve_sms_messages_by_phone_number(number: str, limit: int , page: int) -> SMSContact: db = next(get_db()) skip = (page - 1) * limit messages = db.query(SMSContact).filter(SMSContact.phone_number == number).options(joinedload(SMSContact.messages)).limit(limit).offset(skip).first() return messages