o
    viM                     @  s   d dl mZ d dlZd dlmZmZmZ d dlmZ G dd deZ	G dd deZ
G d	d
 d
eejdZG dd deZG dd deZG dd deZdS )    )annotationsN)FieldFunctionTerm)format_alias_sqlc                      s*   e Zd Z	dd fdd	Zd
d Z  ZS )ArrayNvalueslistconverter_optionsdict | Nonealias
str | Nonec                   s(   t  | || _|| _|pt | _d S N)super__init___values_converter_clsdict_converter_options)selfr   converter_clsr
   r   	__class__ V/home/air/biblejyuku/back/venv/lib/python3.10/site-packages/pypika/clickhouse/array.pyr      s   zArray.__init__c                 C  sf   | j r(g }| jD ]}| j |fi | j}||  qddd|dg}nt| j}t|| jS )N [,])	r   r   r   appendget_sqljoinstrr   r   )r   	convertedvalue	convertersqlr   r   r   r       s   

zArray.get_sql)NNN)r   r	   r
   r   r   r   )__name__
__module____qualname__r   r    __classcell__r   r   r   r   r      s    r   c                   @  s&   e Zd Z		dddd	ZdddZdS )HasAnyN
left_arrayArray or Fieldright_arrayr   r   schemac                 C  s(   || _ || _|| _|| _d| _d| _d S )Nr   hasAny)_left_array_right_arrayr   r/   argsname)r   r,   r.   r   r/   r   r   r   r   %   s   
zHasAny.__init__Fc           	      K  sb   | j  }| j }dj| jt| j trd| n|t| jtr#d| n|d}t|| jfi |S )Nz{name}({left},{right})"%s")r4   leftright)	r1   r    r2   formatr4   
isinstancer   r   r   )	r   
with_aliaswith_namespace
quote_chardialectkwargsr6   r7   r&   r   r   r   r    3   s   

zHasAny.get_sqlNN)r,   r-   r.   r-   r   r   r/   r   )FFNN)r'   r(   r)   r   r    r   r   r   r   r+   $   s
    r+   c                   @  s6   e Zd ZddddZdd
dZeejdddZdS )_AbstractArrayFunctionNarrayr-   r   r   r/   c                 C  s    || _ || _|  | _|| _d S r   )r/   r   clickhouse_functionr4   _array)r   rA   r   r/   r   r   r   r   ?   s   

z_AbstractArrayFunction.__init__Fc                 K  sB   | j  }dj| jt| j trd| n|d}t|| jfi |S )Nz{name}({array})r5   )r4   rA   )rC   r    r8   r4   r9   r   r   r   )r   r;   r<   r=   r>   rA   r&   r   r   r   r    E   s   
z_AbstractArrayFunction.get_sqlreturnr"   c                 C  s   d S r   r   clsr   r   r   rB   M   s   z*_AbstractArrayFunction.clickhouse_functionr?   )rA   r-   r   r   r/   r   )FNNrD   r"   )	r'   r(   r)   r   r    classmethodabcabstractmethodrB   r   r   r   r   r@   >   s    
r@   )	metaclassc                   @     e Zd ZedddZdS )NotEmptyrD   r"   c                 C     dS )NnotEmptyr   rE   r   r   r   rB   T      zNotEmpty.clickhouse_functionNrG   r'   r(   r)   rH   rB   r   r   r   r   rM   S       rM   c                   @  rL   )EmptyrD   r"   c                 C  rN   )Nemptyr   rE   r   r   r   rB   Z   rP   zEmpty.clickhouse_functionNrG   rQ   r   r   r   r   rS   Y   rR   rS   c                   @  rL   )LengthrD   r"   c                 C  rN   )Nlengthr   rE   r   r   r   rB   `   rP   zLength.clickhouse_functionNrG   rQ   r   r   r   r   rU   _   rR   rU   )
__future__r   rI   pypika.termsr   r   r   pypika.utilsr   r   r+   ABCMetar@   rM   rS   rU   r   r   r   r   <module>   s    