o
    "i                     @   s   d Z ddlmZmZmZmZ ddlmZ ddlmZm	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G dd deZG dd deZdS )z%
Metadata schemas for knowledge base
    )OptionalListDictAny)datetime)	BaseModelFieldc                   @   s   e Zd ZU dZedddZeed< edddZeed< edddZ	eed	< ed
ddZ
eee  ed< ed
ddZee ed< edddZeed< ed
ddZee ed< d
S )MetadataFieldCreatez$Schema for creating a metadata field.Field display namedescription
field_namezField key for storage	field_keyz=Field type: text, textarea, number, date, select, multiselect
field_typeN$Options for select/multiselect typesfield_optionsDefault valuedefault_valueFWhether field is requiredis_requiredField descriptionr   )__name__
__module____qualname____doc__r   r   str__annotations__r   r   r   r   r   r   r   boolr    r   r   </lsinfo/ai/hellotax_ai/base_platform/app/schemas/metadata.pyr	   	   s   
 r	   c                   @   s   e Zd ZU dZedddZee ed< edddZ	ee ed< edddZ
eee  ed	< edd
dZee ed< edddZee ed< edddZee ed< edddZee ed< dS )MetadataFieldUpdatez$Schema for updating a metadata fieldNr
   r   r   z
Field typer   r   r   r   r   r   r   r   r   z
Sort order
sort_order)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   intr   r   r   r   r       s   
 r    c                   @   s   e Zd ZU dZeed< eed< eed< eed< eed< eee  ed< ee ed< e	ed	< eed
< ee ed< ee
 ed< ee
 ed< edddZe	ed< G dd dZdS )MetadataFieldResponsez"Schema for metadata field responseidknowledge_base_idr   r   r   r   r   r   r!   r   
created_at
updated_atFWhether this is a system fieldr   	is_systemc                   @   s   e Zd ZdZdS )zMetadataFieldResponse.ConfigTN)r   r   r   from_attributesr   r   r   r   Config/   s    r+   N)r   r   r   r   r"   r   r   r   r   r   r   r   r)   r+   r   r   r   r   r#      s    
 r#   c                   @   s"   e Zd ZU dZeed< eed< dS )FieldReorderzSchema for reordering fieldsfield_idr!   N)r   r   r   r   r"   r   r   r   r   r   r,   3   s   
 r,   c                   @   s   e Zd ZU dZeed< eed< eed< eed< eee  ed< ee ed< e	dd	d
Z
eed< e	ddd
Zeed< e	dd	d
Z
eed< e	ddd
Zeed< dS )DocumentMetadataValueResponsez+Schema for document metadata value responser-   r   r   r   r   valueFr(   r   r)   zWhether this field is read-onlyis_readonlyN)r   r   r   r   r"   r   r   r   r   r   r)   r   r0   r   r   r   r   r.   9   s   
 r.   c                   @   s&   e Zd ZU dZeed< ee ed< dS )DocumentMetadataResponsez%Schema for document metadata responsedocument_idmetadataN)r   r   r   r   r"   r   r   r.   r   r   r   r   r1   G   s   
 r1   c                   @   s.   e Zd ZU dZedddZeeef e	d< dS )DocumentMetadataUpdatez%Schema for updating document metadata.z"Metadata values keyed by field_keyr   r3   N)
r   r   r   r   r   r3   r   r   r   r   r   r   r   r   r4   M   s   
  r4   N)r   typingr   r   r   r   r   pydanticr   r   r	   r    r#   r,   r.   r1   r4   r   r   r   r   <module>   s    