o
    EDi	                     @   s   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
 d dlmZ d dlmZ d dlmZ d	Zdd
dZG dd deZdS )    N)	Inspector)NoResultFound)text)sqla_type_from_name)build_engine)
full_table)dialect_name)default_typecodec_expressionttl_expressionc                 C   sJ   |  td| d| d}t|d }|s td| d| dt|jS )Nz8SELECT engine_full FROM system.tables WHERE database = 'z' and name = ''Table . does not exist)executer   nextr   r   engine_full)
connection
table_nameschema
result_setrow r   c/var/www/Datamplify/venv/lib/python3.10/site-packages/clickhouse_connect/cc_sqlalchemy/inspector.py
get_engine   s   

r   c                   @   s   e Zd Zdd ZdddZdS )ChInspectorc                 O   s   |j }| |j|D ]/}|d}|r||vs|r||v rq
|d}	dd | D }
|tj||	fi |
 q
t| j	|j||_
d S )Nnametypec                 S   s0   i | ]\}}|r|t v rt d | n||qS )_)ch_col_argsdn).0keyvaluer   r   r   
<dictcomp>!   s   0 z-ChInspector.reflect_table.<locals>.<dictcomp>)r   get_columnsr   popitemsappend_column	sa_schemaColumnr   bindengine)selftableinclude_columnsexclude_columns_args_kwargsr   colr   col_typecol_argsr   r   r   reflect_table   s   

zChInspector.reflect_tableNc           
      K   s   t ||}| jtd| }|stdt  dg }|D ]#}t|jdd}|j||j	d|j
|j|j|j|jd	}	||	 q|S )NzDESCRIBE TABLE r   r   
 F)	r   r   nullableautoincrementdefaultr	   commentr
   r   )r   r+   r   r   r   r   r   replacer   r9   default_expressionr	   r<   r
   r   append)
r-   r   r   r2   table_idr   columnsr   	sqla_typer3   r   r   r   r%   %   s&   
	zChInspector.get_columnsN)__name__
__module____qualname__r6   r%   r   r   r   r   r      s    r   rC   )sqlalchemy.schemar   r)   sqlalchemy.engine.reflectionr   sqlalchemy.orm.excr   
sqlalchemyr   /clickhouse_connect.cc_sqlalchemy.datatypes.baser   0clickhouse_connect.cc_sqlalchemy.ddl.tableenginer   $clickhouse_connect.cc_sqlalchemy.sqlr    clickhouse_connect.cc_sqlalchemyr   r    r   r   r   r   r   r   r   <module>   s    
	