o
    B_ip                     @  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   O/var/www/html/flask_server/apps/aroflo_connector_app/zones/businessunits/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]c                C  s   |d ur|| d< | S )NpageSizer   )r%   r-   r   r   r   _add_optional!   s   r0   fnCallable[..., Any]c                 C  s\   t jddtdd| } t jdd ddd| } t jdtd dd	d
| } t jdddd| } | S )Nz--page   T)defaulttypeshow_defaultz--whereu   Cláusula WHERE estilo AroFlo.)r4   r6   helpz
--pagesizeuC   Cantidad de registros por página (AroFlo pageSize). Ej: 5, 20, 50.)r5   r4   r6   r7   z--rawz&Devuelve respuesta cruda + meta debug.)is_flagr7   )r   optionint)r1   r   r   r   _common_list_options'   s   r;   rootclick.Groupc                   sz   | j jddd   dtd fdd} dtd fdd}d! fdd}|ddd |ddd d S )"N)namec                   S  s   dS )z1Operaciones de la zona businessunits (READ ONLY).Nr   r   r   r   r   businessunits_group6   s    z)register_cli.<locals>.businessunits_groupr   pager:   whereOptional[str]r-   r.   rawboolc                   (   t | ||d|d}tt d| d S )Nr@   rA   rC   r-   list_businessunitsr0   r   r,   r@   rA   r-   rC   r%   r   r   r   list_cmd;      zregister_cli.<locals>.list_cmdarchivedc                   rE   )NrF   rG   list_archived_businessunitsrI   rJ   rK   r   r   archived_cmdA   s   z"register_cli.<locals>.archived_cmdcmd_namer   r$   	help_textr	   r
   c                   s&   j | |dtd fd
d}d S )N)r7   r@   r:   rA   rB   r-   r.   rC   rD   c                   s(   t | ||d|d}tt | d S )NrF   rG   rI   rJ   )r$   r   r   r   _cmdJ   rM   z4register_cli.<locals>.add_join_command.<locals>._cmdr@   r:   rA   rB   r-   r.   rC   rD   )commandr;   )rQ   r$   rR   rS   r?   r   )r$   r   add_join_commandI   s   z&register_cli.<locals>.add_join_command	locations get_businessunits_with_locationszBusinessUnits + join=locations
priorities!get_businessunits_with_prioritieszBusinessUnits + join=prioritiesrT   )rQ   r   r$   r   rR   r   r	   r
   )groupr   rU   r;   )r<   r   rL   rP   rW   r   rV   r   register_cli5   s   
r]   )r   r   r	   r
   )r   r   r	   r   )r   r   r$   r   r%   r&   r	   r   )r%   r&   r-   r.   r	   r&   )r1   r2   r	   r2   )r<   r=   r   r   r	   r
   )
__future__r   r   typingr   r   r   r   r   r   r   r#   r,   r0   r;   r]   r   r   r   r   <module>   s   




