from typing import Any from fastapi import APIRouter, Body, Query from app.services.tjnetwork import ( ChangeSet, get_control, get_control_schema, get_rule, get_rule_schema, set_control, set_rule, ) router = APIRouter() @router.get("/network-schemas/control", summary="获取控制架构", description="获取网络中控制对象的架构定义") def fastapi_get_control_schema(network: str = Query(..., description="管网名称(或数据库名称)")) -> dict[str, dict[str, Any]]: """获取控制架构。 返回指定网络中控制对象的属性架构定义。 """ return get_control_schema(network) @router.get("/controls/properties", summary="获取控制属性", description="获取指定网络中的控制属性信息") def fastapi_get_control_properties(network: str = Query(..., description="管网名称(或数据库名称)")) -> dict[str, Any]: """获取控制属性。 返回指定网络中的控制对象属性信息。 """ return get_control(network) @router.patch("/controls/properties", response_model=None, summary="设置控制属性", description="更新指定网络中的控制属性") def fastapi_set_control_properties( network: str = Query(..., description="管网名称(或数据库名称)"), payload: dict[str, Any] = Body(...) ) -> ChangeSet: """设置控制属性。 更新指定网络中的控制属性值。 """ props = payload return set_control(network, ChangeSet(props)) @router.get("/rule-schemas", summary="获取规则架构", description="获取网络中规则对象的架构定义") def fastapi_get_rule_schema(network: str = Query(..., description="管网名称(或数据库名称)")) -> dict[str, dict[str, Any]]: """获取规则架构。 返回指定网络中规则对象的属性架构定义。 """ return get_rule_schema(network) @router.get("/rule-properties", summary="获取规则属性", description="获取指定网络中的规则属性信息") def fastapi_get_rule_properties(network: str = Query(..., description="管网名称(或数据库名称)")) -> dict[str, Any]: """获取规则属性。 返回指定网络中的规则对象属性信息。 """ return get_rule(network) @router.patch("/rule-properties", response_model=None, summary="设置规则属性", description="更新指定网络中的规则属性") def fastapi_set_rule_properties( network: str = Query(..., description="管网名称(或数据库名称)"), payload: dict[str, Any] = Body(...) ) -> ChangeSet: """设置规则属性。 更新指定网络中的规则属性值。 """ props = payload return set_rule(network, ChangeSet(props))