U
    —âñjj  ã                   @   sb   d dl mZ d dlmZmZ dd„ Zeeddœdd„Zeeeef d	œd
d„Zeddœdd„Z	dS )é    )Ú
Collection)ÚDictÚAnyc                 C   s   t | ƒ d S )N)Úprint)Útext© r   úd/var/www/itgmanager/itgmanager/Analytic/scapp_database/refactorization/db_cameras_refactorization.pyÚmain_logger   s    r	   N)Úparameters_collectionÚversionÚreturnc              
   C   sV   z | j ddidd|iidd� W n0 tk
rP } ztd|› �ƒ‚W 5 d}~X Y nX dS )	uF   # ? Actualiza o inserta el documento con _id 'ScappDBVersion' en la colecciÃ³n proporcionada,
        # ? estableciendo el campo 'version' con el valor recibido.

    Args:
        parameters_collection (Collection): Instancia de la colecciÃ³n de MongoDB.
        version (Any): Valor a establecer en el campo 'version'.
    Ú_idÚScappDBVersionz$setr   T)Úupsertz3Error al actualizar el documento 'ScappDBVersion': N)Ú
update_oneÚ	Exception)r
   r   Úer   r   r   Úupdate_scapp_db_version   s    
ý
r   )r
   r   c              
   C   sV   z |   ddi¡}|dk	r|ni W S  tk
rP } ztd|› �ƒ‚W 5 d}~X Y nX dS )um   # ? Busca y retorna el documento con _id 'ScappDBVersion' en la colecciÃ³n proporcionada.
        # ? Si el documento no existe, retorna un diccionario vacÃ­o.

    Args:
        parameters_collection (Collection): Instancia de la colecciÃ³n de MongoDB.

    Returns:
        Dict[str, Any]: El documento encontrado o un diccionario vacÃ­o si no se encuentra.
    r   r   Nz/Error al buscar el documento 'ScappDBVersion': )Úfind_oner   )r
   Údocumentr   r   r   r   Úget_scapp_db_version   s
    
r   )Úcameras_collectionr   c           
      C   sþ   ddddœddddœddddœg}|D ]Ò}|d }|d	 }|d
 }||i}|   |¡}|r&td|› d|› d|› �ƒ | ¡ }| dd¡ | |d¡ ||d< z&|  |¡ |  |¡ td|› �ƒ W q& tk
rö }	 ztd|› d|	› �ƒ W 5 d}	~	X Y q&X q&dS )a…   # ? Migra documentos de la estructura antigua a la nueva utilizando _id como identificador.
    
    Migraciones a realizar:
      - { "Cameras": "AllCameras" }                 => {_id: "Cameras", ... }
      - { "Historical_Index": "Cameras_Index" }     => {_id: "HistoricalIndices", ... }
      - { "RespaldoCameras": "AllCameras" }         => {_id: "RespaldoCameras", ... }
      
    ÚCamerasZ
AllCameras)Ú	old_fieldÚ	old_valueÚnew_idZHistorical_IndexZCameras_IndexZHistoricalIndicesZRespaldoCamerasr   r   r   zDocumento encontrado con z: z. Migrando a _id: r   Nz&Documento migrado exitosamente a _id: z!Error al migrar el documento con )r   r	   ÚcopyÚpopÚ
insert_oneÚ
delete_oner   )
r   ZmigracionesZmigr   r   r   ÚqueryÚdocZ	nuevo_docr   r   r   r   Úrefactorice_indices_cameras2   s@    ýýýõ


(r"   )
Úpymongo.collectionr   Útypingr   r   r	   r   Ústrr   r"   r   r   r   r   Ú<module>   s
   