o
    w1i                     @  s`   d dl mZ d dlmZ d dlmZmZmZmZ d dl	m
Z
 eG dd dZG dd dZd	S )
    )annotations)	dataclass)AnyDictListOptional)AroFloClientc                   @  s6   e Zd ZU dZdZded< dZded< dZded< dS )UserFiltersu   
    Filtros simples para la zona Users.

    Ojo: aquí NO usamos lastupdateutc, porque esa columna
    no está disponible en la zona Users.
    NzOptional[str]useridemailname_contains)__name__
__module____qualname____doc__r
   __annotations__r   r    r   r   N/var/www/html/flask_server/apps/aroflo_connector_app/features/users/service.pyr	   	   s
   
 r	   c                   @  s8   e Zd ZdZdddZdddZdddddddZdS )UsersServicez
    Servicio para leer usuarios desde la zona 'users' de AroFlo.

    Importante:
    - No usamos lastupdateutc en WHERE ni en ORDER.
    - Si no se pasan filtros, NO enviamos WHERE: dejamos que
      AroFlo aplique su filtro por defecto.
    clientr   returnNonec                 C  s
   || _ d S )N)r   )selfr   r   r   r   __init__!   s   
zUsersService.__init__filtersOptional[UserFilters]Dict[str, Any]c                 C  s0   |si S i }|j r|j |d< |jr|j|d< |S )u{   
        Convierte UserFilters en un dict plano que se enviará
        como querystring (filters=...) al cliente.
        r
   r   )r
   r   )r   r   datar   r   r   _build_filters_dict$   s   

z UsersService._build_filters_dictN   F)r   pageinclude_rawr    intr!   boolc                C  sp   |  |}| jjd||dd}|r|S |di }|dg }|t|ddt|ddt|d	dd
S )z
        Devuelve usuarios desde la zona 'users'.

        - NO construye WHERE.
        - NO manda ORDER.
        - Solo pasa filtros directos como query params.
        usersGET)zoner   r    methodzoneresponse
pagenumber1currentpageresults0maxpageresults)r$   r)   r+   r-   )r   r   requestgetr"   )r   r   r    r!   filters_dictresponser&   r$   r   r   r   
list_users=   s    
zUsersService.list_users)r   r   r   r   )r   r   r   r   )r   r   r    r"   r!   r#   r   r   )r   r   r   r   r   r   r2   r   r   r   r   r      s    
	
r   N)
__future__r   dataclassesr   typingr   r   r   r   %apps.aroflo_connector_app.core.clientr   r	   r   r   r   r   r   <module>   s    