# mongo_puertos.py

import pandas as pd
from pymongo import MongoClient

# --- CONFIGURACIÓN ---
def conectar_mongo(uri="mongodb://localhost:27017/", db_name="puertos_cruceros", collection_name="arribos_pasajeros"):
    client = MongoClient(uri)
    db = client[db_name]
    return db[collection_name]

# --- CONSULTA POR PUERTO ---
def consultar_puerto(puerto, coleccion=None):
    if coleccion is None:
        coleccion = conectar_mongo()
    resultados = list(coleccion.find({"Puerto": puerto}))
    return pd.DataFrame(resultados)

# --- CONSULTAR TODOS LOS REGISTROS ---
def obtener_todo(coleccion=None):
    if coleccion is None:
        coleccion = conectar_mongo()
    return pd.DataFrame(list(coleccion.find()))

# --- AGREGAR NUEVOS REGISTROS ---
def agregar_datos(df_nuevo, coleccion=None):
    if coleccion is None:
        coleccion = conectar_mongo()

    if not isinstance(df_nuevo, pd.DataFrame):
        raise ValueError("Debe proporcionar un DataFrame de pandas.")

    registros = df_nuevo.to_dict(orient='records')
    resultado = coleccion.insert_many(registros)
    print(f"{len(resultado.inserted_ids)} registros insertados.")

# --- EJEMPLO DE USO DIRECTO ---
if __name__ == "__main__":
    # Conexión a MongoDB
    coleccion = conectar_mongo()

    # Consultar por puerto
    df = consultar_puerto("Mazatlán, Sin.", limite=5, coleccion=coleccion)
    print("Primeros registros de Mazatlán:")
    print(df)

    # Consultar toda la base (opcional)
    # df_todo = obtener_todo(coleccion)
    # print(df_todo.head())

    # Agregar nuevos datos (opcional)
    # df_nuevo = pd.read_csv("nuevos_datos.csv")
    # agregar_datos(df_nuevo, coleccion)
