55 lines
1.9 KiB
Python
55 lines
1.9 KiB
Python
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 |