from models import SMSMessage as SMSDBMessage, SMSContact, SMSCost, SMSMetadata from schemas import SMSMessage def to_db(message: SMSMessage) -> SMSContact: payload = message.data.attributes sms_metadata = SMSMetadata() sms_metadata.message_callback_url = payload.message_callback_url sms_metadata.message_encoding = payload.message_encoding sms_metadata.message_type = payload.message_type sms_metadata.status = payload.status sms_cost = SMSCost() sms_cost.amount_display = payload.amount_display sms_cost.amount_nanodollars = payload.amount_nanodollars sms_message = SMSDBMessage() sms_message.from_number = payload.from_number sms_message.direction = payload.direction sms_message.is_mms = payload.is_mms sms_message.message = payload.message sms_message.timestamp = payload.timestamp sms_message.cost = sms_cost sms_message.sms_metadata = sms_metadata sms_contact = SMSContact() sms_contact.phone_number = payload.to_number sms_contact.messages = [sms_message] return sms_contact def to_db_existing_contact(message: SMSMessage) -> SMSDBMessage: payload = message.data.attributes sms_metadata = SMSMetadata() sms_metadata.message_callback_url = payload.message_callback_url sms_metadata.message_encoding = payload.message_encoding sms_metadata.message_type = payload.message_type sms_metadata.status = payload.status sms_cost = SMSCost() sms_cost.amount_display = payload.amount_display sms_cost.amount_nanodollars = payload.amount_nanodollars sms_message = SMSDBMessage() sms_message.from_number = payload.from_number sms_message.direction = payload.direction sms_message.is_mms = payload.is_mms sms_message.message = payload.message sms_message.timestamp = payload.timestamp sms_message.cost = sms_cost sms_message.sms_metadata = sms_metadata return sms_message