o
    Bi		                     @  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
 ddlmZmZ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dS )a  Bootstrap models for newly provisioned tenant databases.

These tables are intentionally minimal and separate from the existing app
schemas. They provide a stable starting point for tenant-specific metadata and
usage tracking without modifying any code under ``/apps``.
    )annotationsN)datetime)BooleanDateTimeJSONStringText)DeclarativeBaseMappedmapped_columnreturnstrc                   C  s   t t S )N)r   uuiduuid4 r   r   $platform/tenants/bootstrap_models.py_uuid   s   r   c                   @  s   e Zd ZdZdS )TenantBootstrapBasez%Base for per-tenant bootstrap tables.N)__name__
__module____qualname____doc__r   r   r   r   r      s    r   c                   @  s   e Zd ZU dZdZeeddedZde	d< eed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	ejdZde	d< dS )
TenantUserz>Minimal tenant-scoped user record created during provisioning.users$   Tprimary_keydefaultMapped[str]user_id   F)uniquenullableindexemail    adminr"   r   rolezMapped[bool]	is_activeMapped[datetime]
created_atN)r   r   r   r   __tablename__r   r   r   r   __annotations__r$   r(   r   r)   r   r   utcnowr+   r   r   r   r   r      s   
 r   c                   @  s   e Zd ZU dZdZeedde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d
Zde	d< eed	ejdZde	d< dS )TenantUsageRecordz?Minimal usage table available from day one for every tenant DB.usager   Tr   r   usage_id   Fr"   metric_name@   0r'   metric_valuemetadataMapped[dict | None]metadata_jsonr*   recorded_atN)r   r   r   r   r,   r   r   r   r1   r-   r4   r7   r   r:   r   r   r.   r;   r   r   r   r   r/   %   s   
 r/   c                   @  st   e Zd ZU dZdZeedddZded< ee	ddZ
d	ed
< ededdZded< eedejejdZded< dS )TenantAppConfigz7Key-value config store for default tenant app settings.
app_configr2   T)r   r   
config_keyr3   zMapped[str | None]config_valueconfigr9   config_jsonF)r"   r   onupdater*   
updated_atN)r   r   r   r   r,   r   r   r>   r-   r   r?   r   rA   r   r   r.   rC   r   r   r   r   r<   1   s   
  r<   )r   r   )r   
__future__r   r   r   
sqlalchemyr   r   r   r   r   sqlalchemy.ormr	   r
   r   r   r   r   r/   r<   r   r   r   r   <module>   s    
