from pymongo.collection import Collection
from typing import Dict, Any


# from scapp_modules.Logger import main_logger


def update_scapp_db_version(parameters_collection: Collection, version_key:str, version: Any ) -> None:
    """ # ? 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'.
    """
    try:
        parameters_collection.update_one(
            {"_id": "ScappDBVersion"},
            {"$set": {version_key: version}},
            upsert=True
        )
    except Exception as e:
        # Manejo de errores: aquí podrías implementar un registro (logging) o gestionar la excepción de otra forma.
        raise Exception(f"Error al actualizar el documento 'ScappDBVersion': {e}")
    
    

def get_scapp_db_version(parameters_collection: Collection) -> Dict[str, Any]:
    """ # ? 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.
    """
    try:
        document = parameters_collection.find_one({"_id": "ScappDBVersion"})
        return document if document is not None else {}
    except Exception as e:
        raise Exception(f"Error al buscar el documento 'ScappDBVersion': {e}")

        
