o
    ip                     @  sN   d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	m
Z
 G dd dZdS )	zControl-plane backed tenant registry.

This module centralizes reads from the control plane so the rest of the
platform can work with a single registry abstraction.
    )annotations)select)get_control_plane_session)TenantTenantDomain	TenantAppc                   @  s.   e Zd ZdZdddZdd	d
ZdddZdS )TenantRegistryz5Read tenant metadata from the control-plane database.	tenant_idstrreturnTenant | Nonec                 C  s6   t  }|t|W  d    S 1 sw   Y  d S )N)r   getr   )selfr	   session r   #platform/tenants/tenant_registry.py
get_tenant   s   
$zTenantRegistry.get_tenantdomainc                 C  s   |pd   }|sd S t )}ttttjtjktj	|ktj
dd}|| W  d    S 1 s;w   Y  d S )N T   )striplowerr   r   r   joinr   r	   wherer   	is_activeis_limitexecutescalar_one_or_none)r   r   
normalizedr   stmtr   r   r   get_tenant_by_domain   s   $z#TenantRegistry.get_tenant_by_domainapp_idTenantApp | Nonec                 C  sd   t  %}tttj|ktj|ktjdd}|	|
 W  d    S 1 s+w   Y  d S )NTr   )r   r   r   r   r	   r"   
is_enabledr   r   r   r   )r   r	   r"   r   r    r   r   r   get_tenant_app#   s   
	$zTenantRegistry.get_tenant_appN)r	   r
   r   r   )r   r
   r   r   )r	   r
   r"   r
   r   r#   )__name__
__module____qualname____doc__r   r!   r%   r   r   r   r   r      s
    

r   N)r)   
__future__r   
sqlalchemyr   config.control_planer   platform.tenants.modelsr   r   r   r   r   r   r   r   <module>   s    