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 selectinload from uuid import UUID def receive_sms_messages_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_handler(number: str, include_cost: bool, include_metadata: bool) -> SMSContact: db = next(get_db()) query = db.query(SMSContact).filter(SMSContact.phone_number == number) if include_cost: query = query.options(selectinload(SMSContact.messages).selectinload(SMSDBMessage.cost)) if include_metadata: query = query.options(selectinload(SMSContact.messages).selectinload(SMSDBMessage.sms_metadata)) response = query.first() if response is not None: return response.messages return [] def delete_sms_message_by_uuid_handler(uuid: UUID): db = next(get_db()) query = db.query(SMSDBMessage).filter(SMSDBMessage.id == uuid).delete() db.commit() print(query)