from fastapi import APIRouter
from pydantic import BaseModel
from conexion import obtener_conexion

# Instanciamos el router
router = APIRouter()

# Definimos la estructura esperada
class DatosSensor(BaseModel):
    sensor_id: str
    cb: int

@router.post("/api/guardar-sensor")
async def guardar_sensor(datos: DatosSensor):
    conexion = obtener_conexion()
    
    if conexion is None:
        return {"status": "error", "message": "No hay conexión a BD"}

    try:
        cursor = conexion.cursor()
        
        # 1. Parámetros a enviar al procedimiento
        valores = (datos.sensor_id, datos.cb)
        
        # 2. Llamada al procedimiento almacenado
        # Sustituye 'sp_guardar_lectura' por el nombre real de tu procedimiento en MySQL
        cursor.callproc('sp_guardar_lectura', valores)
        
        # 3. Confirmar los cambios
        # IMPORTANTE: Aunque sea un SP, si hace INSERT/UPDATE necesita commit
        conexion.commit()
        
        print(f"Éxito: Sensor {datos.sensor_id} con {datos.cb} CB guardado vía SP.")
        return {"status": "ok", "message": "Guardado exitoso"}

    except Exception as e:
        print(f"Error en BD: {e}")
        return {"status": "error", "message": str(e)}

    finally:
        # Cerramos conexiones
        if conexion.is_connected():
            cursor.close()
            conexion.close()