o
    9f	                     @   s   d dl mZ d dlmZmZ d dlmZ d dlm	Z	 d dlm
Z
 d dlmZ ddlmZ G d	d
 d
eZG dd deeee	ZdS )    )Table)DialectKWArgs	Immutable)
SchemaItem)
FromClauseJoinSelect   )ddlc                   @   s<   e Zd ZdddZ		dddZdddZedd	d
ZdS )r   NFc                 C   &   |d u r| j }|jtj| ||d d S N)
checkfirst	if_existsbind_run_ddl_visitorr   SchemaDropperselfr   r   r    r   Y/var/www/Datamplify/venv/lib/python3.10/site-packages/clickhouse_sqlalchemy/sql/schema.pydrop   s
   

z
Table.dropc           	      C   s    ||||d}t | ||||dS )N)fulltype
strictnessdistribution)onclauseisouterr   r   )	r   rightr   r   r   r   r   r   flagsr   r   r   join   s   
z
Table.joinc                 K   s&   |rt | |fi |S t | fi |S Nr	   )r   whereclauseparamsr   r   r   select    s   zTable.selectc                 C   sj   | |j |j}|j|_|j|_|j|_|j|_|j|_|j|_|j|_|d u r3|j	|_	|j
|_
|j|_|S r#   )namemetadataschemafullnameimplicit_returningcommentinfo	_prefixesdialect_options_columnscolumnsc)cls	std_table
_extend_onch_tabler   r   r   _make_from_standard%   s   zTable._make_from_standardNFF)NFFNNNr#   )__name__
__module____qualname__r   r"   r&   classmethodr7   r   r   r   r   r      s    


r   c                   @   s\   e Zd ZdZdd Zedd Zedd Z					dddZdd Z	dddZ
dddZd	S )MaterializedViewmaterialized_viewc                 O   s   d S r#   r   )r   argskwargsr   r   r   __init__;   s   zMaterializedView.__init__c                 C      | j jS r#   )r(   r   r   r   r   r   r   >      zMaterializedView.bindc                 C   rB   r#   )inner_tabler(   rC   r   r   r   r(   B   rD   zMaterializedView.metadataFN_mvc	                 C   s   t | }	|	  ||	_|j|	_||	_||	_||	_||	_	|j}
|	jj
}|r/|d u r.|
j| }n|
j}||	_|jdt | t|dsHi |_|	|j|< d|
jd< |	S )N	mat_viewsT
mv_storage)object__new__rA   mv_selectable	__table__rE   if_not_existsclusterpopulatetor(   r'   r-   
setdefaultsetaddhasattrrG   )r3   inner_model
selectablerM   rN   rO   use_to	mv_suffixr'   rvtabler(   r   r   r   rJ   F   s,   




zMaterializedView.__new__c                    s   t  jt  jg} jr|dt  jj g7 }n|dd  jjD t  jjg  fdddD  7 }|dt j g7 }dd	| S )	NzTO c                 S   s   g | ]}t |qS r   )repr).0xr   r   r   
<listcomp>n   s    z-MaterializedView.__repr__.<locals>.<listcomp>c                    s"   g | ]}d |t t |f qS )z%s=%s)r[   getattr)r\   krC   r   r   r^   p   s   " )r)   zAS zMaterializedView(%s)z, )
r[   r'   r(   rP   rE   r1   enginestrrK   r"   )r   r?   r   rC   r   __repr__g   s   zMaterializedView.__repr__c                 C   r   )N)r   rM   )r   r   r   SchemaGenerator)r   r   r   rM   r   r   r   createw   
   
zMaterializedView.createc                 C   r   r   r   r   r   r   r   r   }   rf   zMaterializedView.drop)FNFNrF   Nr8   )r9   r:   r;   __visit_name__rA   propertyr   r(   rJ   rc   re   r   r   r   r   r   r=   8   s    


!
r=   N)
sqlalchemyr   	TableBasesqlalchemy.sql.baser   r   sqlalchemy.sql.schemar   sqlalchemy.sql.selectabler   r   $clickhouse_sqlalchemy.sql.selectabler
    r   r=   r   r   r   r   <module>   s    *