o
    pdid                     @  sx   d dl mZ d dlZd dlmZmZmZmZmZ d dl	Z	d"dd	Z
d#ddZd$ddZd%ddZd&ddZd'd d!ZdS )(    )annotationsN)AnyDictListOptionalCallableresultr   returnNonec                 C  s:   t | ttfrttj| ddd d S tt|  d S )N   F)indentensure_ascii)
isinstancedictlistclickechojsondumpsstr)r    r   Q/var/www/html/flask_server/apps/aroflo_connector_app/zones/trackingcentres/cli.py_echo
   s   r   zone	List[str]c                 C  s   t | dg }tdd |D S )N
operationsc                 S  s   g | ]}|j qS r   )code).0or   r   r   
<listcomp>   s    z"_available_ops.<locals>.<listcomp>)getattrsorted)r   opsr   r   r   _available_ops   s   r#   op_coder   paramsDict[str, Any]c                 C  sl   t t| }||vr/td| d| j d td t| D ]
}td|  q td| j||dS )Nu   ❌ Operación 'z' no existe en zona 'z'.zOperaciones disponibles:z  - r   )r%   )setr#   r   r   r   
SystemExitexecute)r   r$   r%   	availablecr   r   r   _run   s   
r,   pagesizeOptional[int]orderOptional[str]c                C  s    |dur|| d< |r|| d< | S )uQ   
    AroFlo usa pageSize como parámetro de entrada para tamaño de página.
    NpageSizer/   r   )r%   r-   r/   r   r   r   _add_optional!   s
   	r2   fnCallable[..., Any]c                 C  sr   t jddtdd| } t jddddd| } t jd	ddd
d| } t jdtdddd| } t jdddd| } | S )zd
    Decorador para opciones comunes de list:
    - page, where, order, pageSize (AroFlo) y raw
    z--page   T)defaulttypeshow_defaultz--whereNua   Cláusula WHERE estilo AroFlo (opcional). Si no se envía, AroFlo retorna el listado por defecto.)r6   r8   helpz--orderz!ORDER estilo AroFlo. Ej: name|ascz
--pagesizeuC   Cantidad de registros por página (AroFlo pageSize). Ej: 5, 20, 50.)r7   r6   r8   r9   --raw&Devuelve respuesta cruda + meta debug.is_flagr9   )r   optionint)r3   r   r   r   _common_list_options1   s*   r@   rootclick.Groupc                   s   | j  jddd }|dtd' fdd}|dtjddddtjddddd( fdd}|dtjddddtjdd d d!d"tjddddd) fd%d&}d S )*N)namec                   S  s   dS )z:Operaciones de la zona trackingcentres (Tracking Centres).Nr   r   r   r   r   trackingcentres_groupJ   s    z+register_cli.<locals>.trackingcentres_groupr   pager?   wherer0   r/   r-   r.   rawboolc                   s*   t | ||d||d}tt d| d S )N)rE   rF   rG   )r-   r/   list_trackingcentres)r2   r   r,   )rE   rF   r/   r-   rG   r%   r   r   r   list_cmdQ   s   	
zregister_cli.<locals>.list_cmdgetz--trackingcentreidTz%TrackingCentreID codificado (AroFlo).)requiredr9   r:   r;   r<   trackingcentreidr   c                   s   t t d| |d d S )Nget_trackingcentrerN   rG   r   r,   rP   rJ   r   r   get_cmda   s   zregister_cli.<locals>.get_cmdresolvez--namez"Nombre exacto del tracking centre.z--orgidFz"OrgID para desambiguar (opcional).)rM   r6   r9   rC   orgidc                   s*   | |d}|r||d< t t d| d S )N)rC   rG   rT   !resolve_trackingcentre_id_by_namerQ   )rC   rT   rG   r%   rJ   r   r   resolve_cmdj   s   
z!register_cli.<locals>.resolve_cmd)
rE   r?   rF   r0   r/   r0   r-   r.   rG   rH   )rN   r   rG   rH   )rC   r   rT   r0   rG   rH   )groupr   commandr@   r   r>   )rA   r   rD   rK   rR   rV   r   rJ   r   register_cliI   s   
rY   )r   r   r	   r
   )r   r   r	   r   )r   r   r$   r   r%   r&   r	   r   )r%   r&   r-   r.   r/   r0   r	   r&   )r3   r4   r	   r4   )rA   rB   r   r   r	   r
   )
__future__r   r   typingr   r   r   r   r   r   r   r#   r,   r2   r@   rY   r   r   r   r   <module>   s   




