o
    ޭh                     @   s   d dl mZmZ d dlmZmZ G dd deZG dd deZG dd deZG d	d
 d
eZ	G dd deZ
G dd dejZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZdS )    )
SqlContext	functions)	AggregateFunctionc                   @      e Zd ZdZejZdS )TrimzO
    Trims whitespace off edges of text.

    :samp:`Trim("{FIELD_NAME}")`
    N)__name__
__module____qualname____doc__r   r   database_func r   r   W/var/www/html/stock_analysis/be/venv/lib/python3.10/site-packages/tortoise/functions.pyr   
       
r   c                   @   r   )LengthzJ
    Returns length of text/blob.

    :samp:`Length("{FIELD_NAME}")`
    N)r   r	   r
   r   r   r   r   r   r   r   r   r      r   r   c                   @   r   )Coalescezk
    Provides a default value if field is null.

    :samp:`Coalesce("{FIELD_NAME}", {DEFAULT_VALUE})`
    N)r   r	   r
   r   r   r   r   r   r   r   r   r      r   r   c                   @   r   )LowerzI
    Converts text to lower case.

    :samp:`Lower("{FIELD_NAME}")`
    N)r   r	   r
   r   r   r   r   r   r   r   r   r   (   r   r   c                   @   r   )UpperzI
    Converts text to upper case.

    :samp:`Upper("{FIELD_NAME}")`
    N)r   r	   r
   r   r   r   r   r   r   r   r   r   2   r   r   c                   @   s   e Zd ZedefddZdS )_Concatctxc                 C   s>   t | dr| |jddnt| }|jjdkr| dS |S )Nget_sqlF)
with_alias
postgresqlz::text)hasattrr   copystrdialectvalue)argr   sqlr   r   r   get_arg_sql=   s   $
z_Concat.get_arg_sqlN)r   r	   r
   staticmethodr   r    r   r   r   r   r   <   s    r   c                   @   s   e Zd ZdZeZdS )Concatz
    Concate field or constant text.
    Be care, DB like sqlite3 has no support for `CONCAT`.

     :samp:`Concat("{FIELD_NAME}", {ANOTHER_FIELD_NAMES or CONSTANT_TEXT}, *args)`
    N)r   r	   r
   r   r   r   r   r   r   r   r"   G   s    r"   c                   @   r   )CountzV
    Counts the no of entries for that column.

    :samp:`Count("{FIELD_NAME}")`
    N)r   r	   r
   r   r   r#   r   r   r   r   r   r#   W   r   r#   c                   @      e Zd ZdZejZdZdS )SumzR
    Adds up all the values for that column.

    :samp:`Sum("{FIELD_NAME}")`
    TN)r   r	   r
   r   r   r%   r   populate_field_objectr   r   r   r   r%   a       r%   c                   @   r$   )MaxzO
    Returns largest value in the column.

    :samp:`Max("{FIELD_NAME}")`
    TN)r   r	   r
   r   r   r(   r   r&   r   r   r   r   r(   l   r'   r(   c                   @   r$   )MinzP
    Returns smallest value in the column.

    :samp:`Min("{FIELD_NAME}")`
    TN)r   r	   r
   r   r   r)   r   r&   r   r   r   r   r)   w   r'   r)   c                   @   r$   )Avgz^
    Returns average (mean) of all values in the column.

    :samp:`Avg("{FIELD_NAME}")`
    TN)r   r	   r
   r   r   r*   r   r&   r   r   r   r   r*      r'   r*   N)pypika_tortoiser   r   tortoise.expressionsr   r   r   r   r   r   r   r"   r   r#   r%   r(   r)   r*   r   r   r   r   <module>   s    





