o
    ۢi)                     @  s^   d dl mZ d dlZd dlmZ d dlmZmZ edZ	dd	d
Z
dddZddddZdS )    )annotationsN)Config)get_tenant_assignmentresolve_tenant_by_hostz^[a-z0-9_]+$routing_key
str | Nonereturnc                 C  s<   | d u rd S |    }|sd S t|std| |S )NzInvalid routing_key: )striplower_ROUTING_KEY_RE	fullmatch
ValueError)r   value r   config/db_router.pysanitize_routing_key   s   
r   strc                 C  s"   t | }|d u rtdd| S )Nzrouting_key is requiredtenant_)r   r   )r   safe_keyr   r   r   build_tenant_db_name   s   
r   hostnamec                 C  s   |rt |nd }|rt|}|r|dr|d S t|S t| }|r=|d}|r=t|}|r9|dr9|d S t|S tjS )Ntenant_db_namer   )r   r   getr   r   r   DB_NAME)r   r   safe_routing_key
assignmenttenanttenant_routing_keyr   r   r   resolve_db_name   s   
r   )r   r   r   r   )r   r   r   r   )NN)r   r   r   r   r   r   )
__future__r   reconfig.baser   config.control_planer   r   compiler   r   r   r   r   r   r   r   <module>   s    


