from typing import Any, List, Dict
from fastapi import APIRouter, Query, Path
from app.services.tjnetwork import (
    get_pipe_risk_probability_now,
    get_pipe_risk_probability,
    get_pipes_risk_probability,
    get_network_pipe_risk_probability_now,
    get_pipe_risk_probability_geometries,
)

router = APIRouter()

@router.get(
    "/getpiperiskprobabilitynow/",
    summary="获取管道当前风险概率",
    description="获取指定管道当前时刻的风险概率值"
)
async def fastapi_get_pipe_risk_probability_now(
    network: str = Query(..., description="管网名称（或数据库名称）"),
    pipe_id: str = Query(..., description="管道ID")
) -> dict[str, Any]:
    """
    获取管道当前风险概率。
    
    查询指定管道在当前时刻的风险概率值。
    
    Args:
        network: 管网名称（或数据库名称）
        pipe_id: 管道ID
        
    Returns:
        包含风险概率信息的字典
    """
    return get_pipe_risk_probability_now(network, pipe_id)


@router.get(
    "/getpiperiskprobability/",
    summary="获取管道风险概率历史",
    description="获取指定管道的风险概率历史数据"
)
async def fastapi_get_pipe_risk_probability(
    network: str = Query(..., description="管网名称（或数据库名称）"),
    pipe_id: str = Query(..., description="管道ID")
) -> dict[str, Any]:
    """
    获取管道风险概率历史。
    
    查询指定管道的历史风险概率数据。
    
    Args:
        network: 管网名称（或数据库名称）
        pipe_id: 管道ID
        
    Returns:
        包含风险概率历史的字典
    """
    return get_pipe_risk_probability(network, pipe_id)


@router.get(
    "/getpipesriskprobability/",
    summary="批量获取多条管道风险概率",
    description="批量获取多条管道的风险概率值"
)
async def fastapi_get_pipes_risk_probability(
    network: str = Query(..., description="管网名称（或数据库名称）"),
    pipe_ids: str = Query(..., description="逗号分隔的管道ID列表")
) -> list[dict[str, Any]]:
    """
    批量获取多条管道风险概率。
    
    查询多条指定管道的风险概率值。
    
    Args:
        network: 管网名称（或数据库名称）
        pipe_ids: 逗号分隔的管道ID列表（例如：pipe1,pipe2,pipe3）
        
    Returns:
        包含多条管道风险概率的列表
    """
    pipeids = pipe_ids.split(",")
    return get_pipes_risk_probability(network, pipeids)


@router.get(
    "/getnetworkpiperiskprobabilitynow/",
    summary="获取整个网络的管道风险概率",
    description="获取指定网络中所有管道的当前风险概率值"
)
async def fastapi_get_network_pipe_risk_probability_now(
    network: str = Query(..., description="管网名称（或数据库名称）"),
) -> list[dict[str, Any]]:
    """
    获取整个网络的管道风险概率。
    
    查询指定网络中所有管道在当前时刻的风险概率值。
    
    Args:
        network: 管网名称（或数据库名称）
        
    Returns:
        包含网络内所有管道风险概率的列表
    """
    return get_network_pipe_risk_probability_now(network)


@router.get(
    "/getpiperiskprobabilitygeometries/",
    summary="获取管道风险几何信息",
    description="获取指定网络中管道的风险相关几何数据"
)
async def fastapi_get_pipe_risk_probability_geometries(
    network: str = Query(..., description="管网名称（或数据库名称）")
) -> dict[str, Any]:
    """
    获取管道风险几何信息。
    
    查询指定网络中管道的地理和风险相关的几何数据。
    
    Args:
        network: 管网名称（或数据库名称）
        
    Returns:
        包含几何信息和风险数据的字典
    """
    return get_pipe_risk_probability_geometries(network)
