o
    9f
                     @   s   d dl mZmZmZ zd dlmZ d dlmZm	Z	m
Z
mZ W n ey)   edw d dlmZmZ d dlmZ ddlmZ dd	lmZmZmZmZ dd
lmZmZ G dd dejZdd Zdd Zee	ddd Z dZ!dS )    )funcColumntypes)impl)compilesColumnCommentformat_table_nameformat_column_namezalembic must be installed)r   engines)	DropTable   )compare_mat_view)render_attach_mat_viewrender_detach_mat_viewrender_create_mat_viewrender_drop_mat_view)create_mat_viewattach_mat_viewc                   @   s   e Zd ZdZdZdd ZdS )ClickHouseDialectImpl
clickhouseFc                 C   s>   |j j|| jd| d | t| |j j|| jd| d d S )NF)
checkfirst_ddl_runner)dispatchbefore_drop
connection_execr   
after_drop)selftable r   ^/var/www/Datamplify/venv/lib/python3.10/site-packages/clickhouse_sqlalchemy/alembic/dialect.py
drop_table   s   


z ClickHouseDialectImpl.drop_tableN)__name__
__module____qualname____dialect__transactional_ddlr!   r   r   r   r    r      s    r   c                 K   s   | j j}|j}tdtjt d}tdtjdd}|	| |j	|dd d|v rD|d }t
j|d |d	 |t d
|_||jd< d S t
j|t d
|_d S )Ndt)server_defaultversion_numT)primary_key)replace_existingcluster
table_pathreplica_name)versionorder_byclickhouse_cluster)_proxy_migration_context_versionr   r   DateTimer   nowStringappend_columnr
   ReplicatedReplacingMergeTreetupleenginekwargsReplacingMergeTree)contextr<   migration_contextr/   r'   r)   r,   r   r   r    patch_alembic_version'   s    
r@   c                 C   s   |dkr| j drdS dS )Nr   
mv_storageFT)infoget)objectnametype_	reflected
compare_tor   r   r    include_object=   s   rI   r   c                 K   s@   d}|j | jp	dt }|jt|| j| jt	|| j
|dS )Nz?ALTER TABLE {table_name} COMMENT COLUMN {column_name} {comment} )
table_namecolumn_namecomment)sql_compilerrender_literal_valuerM   sqltypesr7   formatr   rK   schemar	   rL   )elementcompilerkwddlrM   r   r   r    visit_column_commentE   s   

rW   )r   r   r   r   r   r   r   r   N)"
sqlalchemyr   r   r   rP   alembic.ddlr   alembic.ddl.baser   r   r   r	   ImportErrorRuntimeErrorclickhouse_sqlalchemyr
   clickhouse_sqlalchemy.sql.ddlr   comparatorsr   	renderersr   r   r   r   toimplr   r   DefaultImplr   r@   rI   rW   __all__r   r   r   r    <module>   s$    
