o
    EDi                     @   sJ   d dl mZmZmZmZmZ d dlmZ d dlm	Z	m
Z
 G dd dZdS )    )SequenceOptionalUnionDictAny)Client)quote_identifierstr_query_valuec                   @   sl   e Zd Z				ddededeeee f deee  deded	eeee	f  fd
dZ
dd Zdd ZdS )TableContextN	MergeTreeclienttablecolumnscolumn_typesengineorder_bysettingsc           
      C   s   || _ d|v r|| _nt|| _|| _t|tr|d}|d u rRg | _g | _|D ]'}|	 }|
d}	| j||	d d  	  | jt|d |	 	  q)ndd |D | _|| _|| _|d u rl| jd | _d S || _d S )N.,    c                 S   s   g | ]}t |qS  r   ).0namer   r   Y/var/www/Datamplify/venv/lib/python3.10/site-packages/clickhouse_connect/tools/testing.py
<listcomp>    s    z)TableContext.__init__.<locals>.<listcomp>r   )r   r   r   r   
isinstancestrsplitcolumn_namesr   stripfindappendr   r   )
selfr   r   r   r   r   r   r   colixr   r   r   __init__   s(   



"zTableContext.__init__c                 C   s   | j dr| j d| j  n| j d| j d ddd t| j| jD }d| j d| d	| j d
| j	 }| j
rd|d7 }| j
 D ]\}}|| dt| d7 }qH|drd|d d }| j | | S )N19DROP TABLE IF EXISTS z SYNCr   c                 s   s&    | ]\}}t | d | V  qdS )r   Nr   )r   r   col_typer   r   r   	<genexpr>*   s   $ z)TableContext.__enter__.<locals>.<genexpr>zCREATE TABLE z (z	) ENGINE z
 ORDER BY z
 SETTINGS z = z, )r   min_versioncommandr   joinzipr    r   r   r   r   itemsr	   endswith)r$   col_defs
create_cmdkeyvaluer   r   r   	__enter__%   s   "
zTableContext.__enter__c                 C   s   | j d| j  d S )Nr)   )r   r.   r   )r$   exc_typeexc_valexc_tbr   r   r   __exit__5   s   zTableContext.__exit__)Nr   NN)__name__
__module____qualname__r   r   r   r   r   r   r   r'   r7   r;   r   r   r   r   r
      s(    

r
   N)typingr   r   r   r   r   clickhouse_connect.driverr   !clickhouse_connect.driver.bindingr   r	   r
   r   r   r   r   <module>   s    