
    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 ee          ZdS )	    )Session)CRUDBase)	DataModelDataModelField)DataModelCreateDataModelUpdate)
get_loggerc                   |    e Zd Zdedededz  fdZdedededz  fdZddded	e	d
ededef
dZ
deded	edefdZdS )CRUDDataModeldbidreturnNc                0    |                      ||          S )N)r   )delete)selfr   r   s      ;/lsinfo/ai/hellotax_ai/base_platform/app/crud/data_model.pyremovezCRUDDataModel.remove   s    {{2"{%%%    keyc                    |                     t                                        t          j        |k                                              S )N)queryr   filterr   first)r   r   r   s      r   
get_by_keyzCRUDDataModel.get_by_key   s5    xx	"")))-3*>??EEGGGr   )	tenant_idobj_in
created_byr   c                   |                     dh          }||d<   ||d<   t          di |}|                    |           |                                 |j        D ]>}t          di |                                 d|j        i}|                    |           ?|                                 |                    |           t          
                    |j                                      d           |S )	Nfieldsexcluder   r   model_iddata_model_idzData model created with fields )dictr   addflushr   r   r   commitrefreshloggerbindinfo)	r   r   r   r   r   
model_datadb_model
field_datafields	            r   create_with_fieldsz CRUDDataModel.create_with_fields   s     [[([44
#-
< "+
;**z**
x



 - 	 	J"MMZ__%6%6MMMMMEFF5MMMM
		


8(+..334TUUUr   db_objc                   |                     ddh          }|                                D ]\  }}t          |||           |j        |                    t
                                        t
          j        |j        k              	                                 |j        D ]A}t          d	i |                     dh          d|j        i}|
                    |           B|                                 |                    |           t                              |j                                      d           |S )
NTr   )exclude_unsetr!   r   r    r"   r#   zData model updated with fieldsr%   )r&   itemssetattrr   r   r   r   r"   r   r   r'   r)   r*   r+   r,   r-   )r   r   r3   r   update_datar1   valuer0   s           r   update_with_fieldsz CRUDDataModel.update_with_fields%   s*    kkxjkII'--// 	* 	*LE5FE5))))=$HH^$$++N,Cvy,PQQXXZZZ$m  
&]]$)H)H]]SYS\]]]u
		


6&),,112RSSSr   )__name__
__module____qualname__r   intr   r   strr   r   r2   r   r:   r%   r   r   r   r      s        & & &T1A & & & &HW Hc Hi$6F H H H H Z^  &5CFSV	   "&/9H	     r   r   N)sqlalchemy.ormr   app.crud.baser   app.models.data_modelr   r   app.schemas.data_modelr   r   common_loggingr	   r;   r+   r   data_model_crudr%   r   r   <module>rF      s    " " " " " " " " " " " " ; ; ; ; ; ; ; ; C C C C C C C C % % % % % %	H		' ' ' ' 'HYHI ' ' 'T  -	**r   