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


# from scapp_modules.Logger import main_logger

def main_logger(text):
    print(text)


def ensure_visitas_coll_and_index(db, visitas_collection_name):
    """
    Verifica que la colección exista y que tenga un índice único compuesto
    por ('day', 1) y ('camera_id', 1). Si la colección o el índice no existen,
    se crean.

    Args:
        db (pymongo.database.Database): Objeto de base de datos de PyMongo.
        visitas_collection_name (str): Nombre de la colección a utilizar.

    Returns:
        pymongo.collection.Collection: La colección garantizada con el índice deseado.
    """
    # Verificar si la colección existe
    if visitas_collection_name not in db.list_collection_names():
        collection = db.create_collection(visitas_collection_name)
        main_logger(f"Creada la colección '{visitas_collection_name}'.")
    else:
        collection = db[visitas_collection_name]

    # Definir la especificación del índice deseado
    desired_index_spec = [("day", 1), ("camera_id", 1)]
    index_exists = False

    # Obtener la información de los índices existentes
    indexes = collection.index_information()
    for index_name, index_info in indexes.items():
        if index_info.get("key") == desired_index_spec and index_info.get("unique", False):
            index_exists = True
            # main_logger(f"El índice deseado ya existe en la colección: {index_name}")
            break

    # Si el índice no existe, lo creamos
    if not index_exists:
        collection.create_index(desired_index_spec, unique=True)
        main_logger(f"Índice único {desired_index_spec} creado en la colección.")

    return
