a
    0i                     @   sF   d dl mZmZmZmZmZ d dlmZ ddlm	Z	 G dd dZ
dS )    )ListDictTupleSetOptional)get_connection   StopButtonEnclosureOptionsc                   @   sD   e Zd ZdZee dddZeee dddZ	edd	d
Z
dS )!StopButtonEnclosureOptionsServiceu   
    Capa de servicio para gestionar la lógica de negocio y el acceso a datos
    para las opciones del botón de parada.

    Esta clase devuelve diccionarios listos para ser serializados a JSON.
    )returnc              	      s   t  }| n}|d dd |jD  | } fdd|D }dd |D }dd |D W  d   W  d   S 1 s0    Y  W d   n1 s0    Y  dS )z
        Obtiene todos los registros de StopButtonEnclosureOptions desde la base de datos
        y los devuelve como una lista de diccionarios.
        z(SELECT * FROM StopButtonEnclosureOptionsc                 S   s   g | ]}|d  qS r    .0columnar   r   H/var/www/html/src/App/api/services/StopButtonEnclosureOptions_Service.py
<listcomp>       z=StopButtonEnclosureOptionsService.get_all.<locals>.<listcomp>c                    s   g | ]}t t |qS r   )dictzip)r   filacolumnasr   r   r      r   c                 S   s   g | ]}t f i |qS r   r	   )r   datar   r   r   r      r   c                 S   s   g | ]}|  qS r   )
model_dump)r   modelor   r   r   r   !   r   N)r   cursorexecutedescriptionfetchall)selfconnr   ZfilasZresultados_dictZmodelosr   r   r   get_all   s    

z)StopButtonEnclosureOptionsService.get_all)item_idr   c              	   C   s   t  }| }|d|f dd |jD }| }|sXW d   W d   dS tt||}tf i |}| W  d   W  d   S 1 s0    Y  W d   n1 s0    Y  dS )z
        Obtiene un registro por su ID desde la base de datos.
        Devuelve un diccionario si lo encuentra, o None si no.
        z:SELECT * FROM StopButtonEnclosureOptions WHERE stop_id = ?c                 S   s   g | ]}|d  qS r   r   r   r   r   r   r   ,   r   z?StopButtonEnclosureOptionsService.get_by_id.<locals>.<listcomp>N)	r   r   r   r   fetchoner   r   r
   r   )r!   r$   r"   r   r   r   Z
datos_dictr   r   r   r   	get_by_id$   s    
z+StopButtonEnclosureOptionsService.get_by_id)stop_idc              
   C   s   z~t  d}| <}d}||| | }|W  d   W  d   W S 1 sT0    Y  W d   n1 sr0    Y  W n4 ty } ztd|  W Y d}~dS d}~0 0 dS )z
        Obtiene los valores de los campos especificados en getFields.

        params:
        - getFields: Lista de nombres de campos a obtener.

        return:
        - Diccionario con los valores de los campos solicitados.
        zISELECT stop_decription FROM StopButtonEnclosureOptions WHERE stop_id = ?;Nz'Error obteniendo campos de CZE_Quotes: )r   r   r   r%   	Exceptionprint)r!   r'   r"   r   queryresulter   r   r   get_description=   s    

Tz1StopButtonEnclosureOptionsService.get_descriptionN)__name__
__module____qualname____doc__r   r   r#   strr   r&   r-   r   r   r   r   r      s   r   N)typingr   r   r   r   r   Consultas_SQL.conexionr   Z"schemas.StopButtonEnclosureOptionsr
   r   r   r   r   r   <module>   s   