U
    i                     @   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  ~}| j}|d dd |jD  | } fdd|D }dd |D }dd |D W  5 Q R  W  5 Q R  S Q R X W 5 Q R X 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    .0Zcolumnar   r   rC:\Users\victor.barrera\Documents\proyectos\elepV3\Elep\src\App\api\services\StopButtonEnclosureOptions_Service.py
<listcomp>   s     z=StopButtonEnclosureOptionsService.get_all.<locals>.<listcomp>c                    s   g | ]}t t |qS r   )dictzip)r   filacolumnasr   r   r      s     c                 S   s   g | ]}t f |qS r   r	   )r   datar   r   r   r      s     c                 S   s   g | ]}|  qS r   )
model_dump)r   modelor   r   r   r   !   s     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 }| }|sTW 5 Q R  W 5 Q R  dS tt||}tf |}| W  5 Q R  W  5 Q R  S Q R X W 5 Q R X 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   ,   s     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  L}| 8}d}||| | }|W  5 Q R  W  5 Q R  W S Q R X W 5 Q R X W n6 tk
r } ztd|  W Y dS d}~X Y nX 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 = ?;z'Error obteniendo campos de CZE_Quotes: N)r   r   r   r#   	Exceptionprint)r   r%   r    r   queryresulter   r   r   get_description=   s    

2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   