
    Xj                         d dl mZ d dlmZ d dlmZmZ d dlmZm	Z	 d dl
mZ  ee          Z G d deeee	f                   Z G d d	eed
d
f                   Z ee          Z ee          Zd
S )    )Session)CRUDBase)DocumentMetadataValueKnowledgeMetadataField)MetadataFieldCreateMetadataFieldUpdate)
get_loggerc            	           e Zd Zdededee         fdZdededededz  fdZ	dede
dedefd	Zded
eeeef                  defdZdS )CRUDMetadataFielddbknowledge_base_idreturnc                    |                     | j                                      t          j        |k                                  t          j                                                  S N)querymodelfilterr   r   order_by
sort_orderall)selfr   r   s      9/lsinfo/ai/hellotax_ai/base_platform/app/crud/metadata.pyget_by_knowledge_basez'CRUDMetadataField.get_by_knowledge_base   sK     HHTZ  V*<@QQRRX,788SUU		
    	field_keyNc                    |                     | j                                      t          j        |k    t          j        |k                                              S r   )r   r   r   r   r   r   first)r   r   r   r   s       r   get_by_field_keyz"CRUDMetadataField.get_by_field_key   sK     HHTZ  V&8<MM&0I=  UWW	
r   obj_inc                ~   |                     t          j                                      t          j        |k                                  t          j                                                                                  }|r|d         dz   nd}t          ||j        |j	        |j
        |j        |j        |j        |j        |	  	        }|                    |           |                                 |                    |           t$                              |j                                      d           |S )Nr      )	r   
field_namer   
field_typefield_optionsdefault_valueis_requireddescriptionr   )metadata_field_idzMetadata field created)r   r   r   r   r   r   descr   r"   r   r#   r$   r%   r&   r'   addcommitrefreshloggerbindidinfo)r   r   r   r   	max_order
next_orderdb_objs          r   create_with_knowledge_basez,CRUDMetadataField.create_with_knowledge_base#   s    HH+677V*<@QQRRX,7<<>>??UWW	 	 *39Yq\A%%
'/(&( . .**!

 

 

 	v
		


6fi00556NOOOr   reorder_datac                $   |D ]^}|                     | j                                      | j        j        |d         k                                  d|d         i           _|                                 t                              d           dS )Nfield_idr   zMetadata fields reorderedT)r   r   r   r/   updater+   r-   r0   )r   r   r5   items       r   batch_reorderzCRUDMetadataField.batch_reorder>   s      	 	DHHTZ  ''
j9I(IJJQQtL12    			/000tr   )__name__
__module____qualname__r   intlistr   r   strr   r   r4   dictboolr:    r   r   r   r      s        

14
	$	%
 
 
 




14

AD

	$	&

 

 

 

&9NQ	   6 $tCH~:N SW      r   r   c            
           e Zd Zdededee         fdZdededededz  fdZdededede	dz  def
d	Z
dedededefd
ZdededefdZdededeee	dz  f         dee         fdZdS )CRUDDocumentMetadataValuer   document_idr   c                    |                     | j                                      t          j        |k                                              S r   )r   r   r   r   rF   r   )r   r   rF   s      r   get_by_documentz)CRUDDocumentMetadataValue.get_by_documentJ   s:    xx
##**+@+LP[+[\\``bbbr   r7   Nc                    |                     | j                                      t          j        |k    t          j        |k                                              S r   )r   r   r   r   rF   r7   r   )r   r   rF   r7   s       r   get_by_document_and_fieldz3CRUDDocumentMetadataValue.get_by_document_and_fieldM   sJ     HHTZ  V%1[@%.(:  UWW	
r   valuec                H   |                      |||          }|r||_        n't          |||          }|                    |           |                                 |                    |           t                              ||                              d           |S )NrF   r7   rF   r7   rK   zDocument metadata value set)	rJ   rK   r   r*   r+   r,   r-   r.   r0   )r   r   rF   r7   rK   r3   s         r   	set_valuez#CRUDDocumentMetadataValue.set_valueY   s     //V^/__ 	 FLL*{X]bcccFFF6NNN
		


6h??DDEbcccr   c                    |                      |||          }|rZ|                    |           |                                 t                              ||                              d           dS dS )NrM   zDocument metadata value deletedTF)rJ   deleter+   r-   r.   r0   )r   r   rF   r7   r3   s        r   delete_by_document_and_fieldz6CRUDDocumentMetadataValue.delete_by_document_and_fieldg   ss    //V^/__ 	IIfIIKKKKKK(KCCHHIjkkk4ur   c                $   |                     | j                                      t          j        |k                                              }|                                 t                              |          	                    d           |S )N)r7   z)Document metadata values deleted by field)
r   r   r   r   r7   rQ   r+   r-   r.   r0   )r   r   r7   counts       r   delete_by_fieldz)CRUDDocumentMetadataValue.delete_by_fieldp   sm    $$++,A,Jh,VWW^^``
		X&&++,WXXXr   metadatac                8   g }|                                 D ]T\  }}||dk    r|                     |||           &|                     ||||          }|                    |           Ut                              |                              d           |S )N rM   rN   )rF   zDocument metadata batch updated)itemsrR   rO   appendr-   r.   r0   )r   r   rF   rV   resultsr7   rK   results           r   batch_update_document_metadataz8CRUDDocumentMetadataValue.batch_update_document_metadatav   s     '~~// 	' 	'OHe}11"+X`1aaaah^cddv&&&&,,112STTTr   )r;   r<   r=   r   r>   r?   r   rH   rJ   r@   rO   rB   rR   rU   rA   r]   rC   r   r   rE   rE   H   se       c' c3 c4H]C^ c c c c



+.

:=

		%

 

 

 

+.:=FIDj	   w  WZ _c    '      +.:>sC$J:O	#	$     r   rE   N)sqlalchemy.ormr   app.crud.baser   app.models.knowledge_baser   r   app.schemas.metadatar   r   common_loggingr	   r;   r-   r   rE   metadata_fielddocument_metadata_valuerC   r   r   <module>re      s   " " " " " " " " " " " " S S S S S S S S I I I I I I I I % % % % % %	H		: : : : :!79LNa!ab : : :z9 9 9 9 9)>d)J K 9 9 9x #"#9::334IJJ   r   