o
    =oj>                     @  s   d Z ddlmZ ddlZddlmZ ddlmZmZmZm	Z	m
Z
mZmZmZmZ ddlmZmZ ddlmZ dd
dZG dd deZG dd deZG dd deZG dd deZG dd deZdS )z3Tenant-aware persistence for the messaging service.    )annotationsN)datetime)	JSONBooleanDateTime
ForeignKeyIndexIntegerStringTextUniqueConstraint)Mappedmapped_column)Basereturnstrc                   C  s   t t S )N)r   uuiduuid4 r   r   ;/var/www/html/flask_server/apps/messaging_service/models.py_uuid   s   r   c                   @  s  e Zd ZU dZeddddeddddd	fZeed
de	dZ
ded< eededdddZded< eedddZded< eedddZded< eedddZded< eedddZded< eedddZded	< eeddddZded< edededZded < eedddZd!ed"< eeddZd#ed$< eeddZd#ed%< eedd&dZded'< eeddZd(ed)< eeddZd(ed*< eed+ddZ d!ed,< eedd-dZ!ded.< eede"j#dZ$d/ed0< eede"j#e"j#d1Z%d/ed2< d3S )4MessagingProvidermessaging_providers	tenant_idname!uq_messaging_provider_tenant_namer   ix_messaging_provider_selectionchannelenabledpriority$   Tprimary_keydefaultMapped[str]provider_id@   tenants.tenant_idFnullableindex   r*   driver   r*   r$   Mapped[bool]d   Mapped[int]    activehealth_statusconfigMapped[dict]config_jsonMapped[str | None]
secret_refMapped[int | None]daily_limitper_minute_limit   max_retriesMapped[datetime | None]last_health_check_atlast_success_ati   
last_errorr   consecutive_failuresMapped[datetime]
created_atr*   r$   onupdate
updated_atN)&__name__
__module____qualname____tablename__r   r   __table_args__r   r
   r   r&   __annotations__r   r   r   r.   r   r   r   r	   r    r6   r   dictr9   r;   r=   r>   r@   r   rB   rC   rD   rE   r   utcnowrG   rJ   r   r   r   r   r      s0   
   r   c                   @  sH  e Zd ZU dZedddddfZeedded	Z	d
e
d< eededdddZde
d< eeddddZd
e
d< eedddZd
e
d< eedddZde
d< eedddZde
d< eeddZd
e
d< eeddZde
d< edededZde
d< eedddZde
d < eedejdZd!e
d"< eedejejd#Zd!e
d$< d%S )&MessagingTemplatemessaging_templatesr   template_keyr   uq_messaging_template_scoper   r!   Tr"   r%   template_idr'   r(   r)   r:   r,   Fr/   r-      r0   r3   version   subject	text_body	html_bodyallowed_variablesMapped[list]allowed_variables_jsonr1   r   rF   rG   rH   rJ   N)rK   rL   rM   rN   r   rO   r   r
   r   rW   rP   r   r   rU   r   r	   rY   r[   r   r\   r]   r   listr`   r   r   r   r   rR   rG   rJ   r   r   r   r   rS   .   s    
   rS   c                   @  s   e Zd ZU dZeddddfZeeddedZ	d	e
d
< eededdddZd	e
d< eedddZd	e
d< eedddZde
d< edededZde
d< edededZde
d< edededZde
d< eedddZde
d< dS )MessagingPermissionmessaging_app_permissionsr   requesting_appuq_messaging_permission_appr   r!   Tr"   r%   permission_idr'   r(   Fr)   r,   r-   r0   r1   r   channelsr_   channels_json	templatestemplates_jsonpurposespurposes_jsonallow_fallbackN)rK   rL   rM   rN   r   rO   r   r
   r   rf   rP   r   r   rd   r   r   r   ra   rh   rj   rl   rm   r   r   r   r   rb   B   s   
  rb   c                   @  s2  e Zd ZU dZeddddddeddd	d
edddfZeedde	dZ
ded< eededdddZded< eedddZded< eedddZded< eedddZded< eedddZded< eedddZded< eedddZded< eedddZded< eeddddZded< eeddZd ed!< eedddZded"< eeded#dddZded$< eed%dd&d'Zded	< eedddZded< ed(eded'Zd)ed*< eedddZded+< eedddZ ded,< ee!de"j#d'Z$d-ed
< ee!de"j#e"j#d.Z%d-ed/< d0S )1MessagingDeliverymessaging_deliveriesr   rd   	operationidempotency_key!uq_messaging_delivery_idempotencyr   $ix_messaging_delivery_status_createdstatusrG   !ix_messaging_delivery_correlationcorrelation_idr!   Tr"   r%   delivery_idr'   r(   Fr)   r,   r-   r:   requested_byr/   r   i@  recipient_normalizedrecipient_maskedrU   r3   template_versionpurposemessaging_providers.provider_idr&   r4   pendingr0   metadatar8   metadata_jsonerror_categoryprovider_coderF   rH   rJ   N)&rK   rL   rM   rN   r   r   rO   r   r
   r   rw   rP   r   r   rd   rx   rp   rq   r   ry   rz   rU   r	   r{   r|   r&   rt   rv   r   rQ   r   r   r   r   r   rR   rG   rJ   r   r   r   r   rn   R   s4   
 
   rn   c                   @  s@  e Zd ZU dZeddddfZeeddedZ	d	e
d
< eededdddZd	e
d< eededddZd	e
d< eeddZde
d< eedddZd	e
d< eedddZde
d< eedddZde
d< eedddZde
d< eeddZde
d< eedejdZde
d< eeddZde
d < eeddZde
d!< d"S )#MessagingDeliveryAttemptmessaging_delivery_attemptsrw   attempt_numberuq_messaging_attempt_numberr   r!   Tr"   r%   
attempt_idz messaging_deliveries.delivery_idFr)   r}   r-   r&   r3   r4   rt   r'   r:   r   r   r0   r1   	retryabler<   
latency_msrF   
started_atrA   completed_atnext_retry_atN)rK   rL   rM   rN   r   rO   r   r
   r   r   rP   r   rw   r&   r	   r   rt   r   r   r   r   r   r   r   rR   r   r   r   r   r   r   r   r   p   s   
  r   )r   r   )__doc__
__future__r   r   r   
sqlalchemyr   r   r   r   r   r	   r
   r   r   sqlalchemy.ormr   r   	config.dbr   r   r   rS   rb   rn   r   r   r   r   r   <module>   s    ,
