o
    Cci                     @  sr   d dl mZ d dlmZmZmZmZmZ d dlm	Z	 d#ddZ
d$ddZd%ddZd%ddZdddd&d!d"ZdS )'    )annotations)AnyDictListTupleOptional	urlencodeclientr   methodstrparams_listList[Tuple[str, str]]returnc                 C  sH   t |}|pd }|dkr| jddd||ddidS | jd|||dS )	a)  
    Ejecuta request al client AroFlo usando lista de params para permitir repetidos.

    GET  -> AroFlo lee querystring (params=lista de tuplas).
    POST -> AroFlo espera application/x-www-form-urlencoded en el BODY (data=string).
            (En trackingcenter por ahora solo usamos GET.)
    GETPOST NzContent-Typez!application/x-www-form-urlencoded)r   paramsdata
var_stringheaders)r   r   r   )r	   upperrequest)r
   r   r   r   method_u r   Y/var/www/html/flask_server/apps/aroflo_connector_app/zones/trackingcentres/_join_utils.pyr      s   	r   respDict[str, Any]c                 C  s   | |t |ddS )N)r   r   )r   metar   )r   r   r   r   r   raw_wrap    s
   r   r   
str | Nonec                 C  sp   |  dd }|d u r|  dd }|d u s|dkrd S zt|}W n ty+   tdw |dkr4tdt|S )NpageSizepagesizer   zpageSize debe ser un entero.r   zpageSize debe ser > 0.)getint	Exception
ValueErrorr   )r   vivr   r   r   coerce_page_size*   s   r)   c                 C  s   |  d}|d u rd S t| }|sd S d|vrtd|dd\}}| }|  }|s5td|dvr=td| d| S )Norder|z4order debe tener formato 'campo|asc' o 'campo|desc'.   u&   order: el campo no puede estar vacío.)ascdescu-   order: la dirección debe ser 'asc' o 'desc'.)r#   r   stripr&   splitlower)r   r'   field	directionr   r   r   coerce_order=   s    
r4   N)joinr*   zonewhereOptional[str]r5   pager$   r!   r*   c                 C  sh   d| fg}|r| d|f |r| d|f |r | d|f |r)| d|f | dt|f |S )ul   
    Builder estándar para listados con WHERE opcional + JOIN opcional + ORDER opcional + paginación.
    r6   r7   r5   r*   r!   r9   )appendr   )r6   r7   r5   r9   r!   r*   r   r   r   r   build_list_paramsU   s   
r;   )r
   r   r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r    )r6   r   r7   r8   r5   r8   r9   r$   r!   r8   r*   r8   r   r   )
__future__r   typingr   r   r   r   r   urllib.parser	   r   r   r)   r4   r;   r   r   r   r   <module>   s   




