from connection.connection import db  # o app.database si tu ruta es distinta
from models.LivenessResponse import LivenessResponse


class query:
    
    @staticmethod
    async def insert_liveness_result(data: LivenessResponse) -> bool:
        sql = """
            INSERT INTO FACETEC.liveness_result (face_scan, audit_trail_image, lowquality_audit_trail_image, session_id, transaction_id)
            VALUES ($1, $2, $3, $4, $5);
        """
        try:
            await db.execute(sql, data.faceScan, data.auditTrailImage, data.lowQualityAuditTrailImage, data.sessionId, data.transactionId)
            return True
        except Exception as e:
            print("❌ Error al insertar los datos:", e)
            return False

    @staticmethod
    async def insertar_imagen(identificacion: str, imagen_base64: str) -> bool:
        sql = """
            INSERT INTO FACETEC.imagenes (identificacion, imagen_base64)
            VALUES ($1, $2)
            ON CONFLICT (identificacion)
            DO UPDATE SET imagen_base64 = EXCLUDED.imagen_base64, fecha_registro = CURRENT_TIMESTAMP;
        """
        try:
            await db.execute(sql, identificacion, imagen_base64)
            return True
        except Exception as e:
            print("❌ Error al insertar imagen:", e)
            return False

    @staticmethod
    async def obtener_imagen_por_identificacion(identificacion: str):
        sql = """
            SELECT * FROM FACETEC.imagenes
            WHERE identificacion = $1
            ORDER BY fecha_registro DESC
            LIMIT 1;
        """
        return await db.fetch_one(sql, identificacion)
