Files
TJWaterServerBinary/app/api/v1/endpoints/network/regions.py
T

73 lines
2.3 KiB
Python

from typing import Any
from fastapi import APIRouter, Body, Query
from app.services.tjnetwork import (
ChangeSet,
add_region,
delete_region,
get_nodes_in_region,
get_region,
get_region_schema,
get_regions,
set_region,
)
router = APIRouter()
@router.get("/network-schemas/region", summary="获取区域属性架构")
def get_region_schema_endpoint(
network: str = Query(..., description="管网名称(或数据库名称)"),
) -> dict[str, dict[str, Any]]:
return get_region_schema(network)
@router.get("/regions", summary="获取区域列表")
def get_regions_endpoint(
network: str = Query(..., description="管网名称(或数据库名称)"),
) -> list[dict[str, Any]]:
return [get_region(network, region_id) for region_id in get_regions(network)]
@router.get("/regions/detail", summary="获取区域信息")
def get_region_endpoint(
network: str = Query(..., description="管网名称(或数据库名称)"),
id: str = Query(..., description="区域 ID"),
) -> dict[str, Any]:
return get_region(network, id)
@router.get("/regions/nodes", summary="获取区域节点")
def get_region_nodes_endpoint(
network: str = Query(..., description="管网名称(或数据库名称)"),
id: str = Query(..., description="区域 ID"),
) -> list[str]:
return get_nodes_in_region(network, id)
@router.patch("/regions", summary="修改区域", response_model=None)
def set_region_endpoint(
network: str = Query(..., description="管网名称(或数据库名称)"),
payload: dict[str, Any] = Body(...),
) -> ChangeSet:
return set_region(network, ChangeSet(payload))
@router.post("/regions", summary="添加区域", response_model=None)
def add_region_endpoint(
network: str = Query(..., description="管网名称(或数据库名称)"),
payload: dict[str, Any] = Body(...),
) -> ChangeSet:
payload["boundary"] = [tuple(point[:2]) for point in payload.get("boundary", [])]
return add_region(network, ChangeSet(payload))
@router.delete("/regions", summary="删除区域", response_model=None)
def delete_region_endpoint(
network: str = Query(..., description="管网名称(或数据库名称)"),
payload: dict[str, Any] = Body(...),
) -> ChangeSet:
return delete_region(network, ChangeSet(payload))