Reorganize WNDB by responsibility and remove legacy scheme endpoints.\n\nRoute analysis and time-series access through project pools, preserve transactional realtime replacement, and refresh GIS materialized views after writes.\n\nAdd database architecture documentation, live pooling coverage, API contract updates, and executable container verification.\n\nBREAKING CHANGE: legacy scheme APIs and flat app.native.wndb module imports are removed.
74 lines
2.4 KiB
Python
74 lines
2.4 KiB
Python
from typing import Any
|
|
|
|
from fastapi import APIRouter, Query, Request
|
|
|
|
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="获取区域属性架构")
|
|
async def get_region_schema_endpoint(
|
|
network: str = Query(..., description="管网名称(或数据库名称)"),
|
|
) -> dict[str, dict[str, Any]]:
|
|
return get_region_schema(network)
|
|
|
|
|
|
@router.get("/regions", summary="获取区域列表")
|
|
async 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="获取区域信息")
|
|
async 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="获取区域节点")
|
|
async 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)
|
|
async def set_region_endpoint(
|
|
network: str = Query(..., description="管网名称(或数据库名称)"),
|
|
request: Request = None,
|
|
) -> ChangeSet:
|
|
return set_region(network, ChangeSet(await request.json()))
|
|
|
|
|
|
@router.post("/regions", summary="添加区域", response_model=None)
|
|
async def add_region_endpoint(
|
|
network: str = Query(..., description="管网名称(或数据库名称)"),
|
|
request: Request = None,
|
|
) -> ChangeSet:
|
|
payload = await request.json()
|
|
payload["boundary"] = [tuple(point[:2]) for point in payload.get("boundary", [])]
|
|
return add_region(network, ChangeSet(payload))
|
|
|
|
|
|
@router.delete("/regions", summary="删除区域", response_model=None)
|
|
async def delete_region_endpoint(
|
|
network: str = Query(..., description="管网名称(或数据库名称)"),
|
|
request: Request = None,
|
|
) -> ChangeSet:
|
|
return delete_region(network, ChangeSet(await request.json()))
|