from fastapi import APIRouter, Request, Query, Path, Body from typing import Any, List, Dict, Union from app.services.tjnetwork import ( Any, ChangeSet, add_mixing, add_source, api, delete_mixing, delete_source, get_emitter, get_emitter_schema, get_mixing, get_mixing_schema, get_pipe_reaction, get_pipe_reaction_schema, get_quality, get_quality_schema, get_reaction, get_reaction_schema, get_source, get_source_schema, get_tank_reaction, get_tank_reaction_schema, set_emitter, set_pipe_reaction, set_quality, set_reaction, set_source, set_tank_reaction, ) router = APIRouter() @router.get("/getqualityschema/", summary="获取水质架构", description="获取网络中水质对象的架构定义") async def fastapi_get_quality_schema(network: str = Query(..., description="管网名称(或数据库名称)")) -> dict[str, dict[str, Any]]: """获取水质架构。 返回指定网络中水质对象的属性架构定义。 """ return get_quality_schema(network) @router.get("/getqualityproperties/", summary="获取水质属性", description="获取指定节点的水质属性信息") async def fastapi_get_quality_properties( network: str = Query(..., description="管网名称(或数据库名称)"), node: str = Query(..., description="节点ID") ) -> dict[str, Any]: """获取水质属性。 返回指定节点的水质属性信息。 """ return get_quality(network, node) @router.post("/setqualityproperties/", response_model=None, summary="设置水质属性", description="更新指定节点的水质属性") async def fastapi_set_quality_properties( network: str = Query(..., description="管网名称(或数据库名称)"), req: Request = None ) -> ChangeSet: """设置水质属性。 更新指定节点的水质属性值。 """ props = await req.json() return set_quality(network, ChangeSet(props)) @router.get("/getemitterschema", summary="获取发射器架构", description="获取网络中发射器对象的架构定义") async def fastapi_get_emitter_schema(network: str = Query(..., description="管网名称(或数据库名称)")) -> dict[str, dict[str, Any]]: """获取发射器架构。 返回指定网络中发射器对象的属性架构定义。 """ return get_emitter_schema(network) @router.get("/getemitterproperties/", summary="获取发射器属性", description="获取指定连接点的发射器属性信息") async def fastapi_get_emitter_properties( network: str = Query(..., description="管网名称(或数据库名称)"), junction: str = Query(..., description="连接点ID") ) -> dict[str, Any]: """获取发射器属性。 返回指定连接点的发射器属性信息。 """ return get_emitter(network, junction) @router.post("/setemitterproperties/", response_model=None, summary="设置发射器属性", description="更新指定连接点的发射器属性") async def fastapi_set_emitter_properties( network: str = Query(..., description="管网名称(或数据库名称)"), junction: str = Query(..., description="连接点ID"), req: Request = None ) -> ChangeSet: """设置发射器属性。 更新指定连接点的发射器属性值。 """ props = await req.json() ps = {"junction": junction} | props return set_emitter(network, ChangeSet(ps)) @router.get("/getsourcechema/", summary="获取水源架构", description="获取网络中水源对象的架构定义") async def fastapi_get_source_schema(network: str = Query(..., description="管网名称(或数据库名称)")) -> dict[str, dict[str, Any]]: """获取水源架构。 返回指定网络中水源对象的属性架构定义。 """ return get_source_schema(network) @router.get("/getsource/", summary="获取水源属性", description="获取指定节点的水源属性信息") async def fastapi_get_source( network: str = Query(..., description="管网名称(或数据库名称)"), node: str = Query(..., description="节点ID") ) -> dict[str, Any]: """获取水源属性。 返回指定节点的水源属性信息。 """ return get_source(network, node) @router.post("/setsource/", response_model=None, summary="设置水源属性", description="更新指定节点的水源属性") async def fastapi_set_source( network: str = Query(..., description="管网名称(或数据库名称)"), req: Request = None ) -> ChangeSet: """设置水源属性。 更新指定节点的水源属性值。 """ props = await req.json() return set_source(network, ChangeSet(props)) @router.post("/addsource/", response_model=None, summary="添加水源", description="在网络中添加一个新的水源") async def fastapi_add_source( network: str = Query(..., description="管网名称(或数据库名称)"), req: Request = None ) -> ChangeSet: """添加水源。 在指定网络中创建一个新的水源,并设置其初始属性。 """ props = await req.json() return add_source(network, ChangeSet(props)) @router.post("/deletesource/", response_model=None, summary="删除水源", description="从网络中删除指定节点的水源") async def fastapi_delete_source( network: str = Query(..., description="管网名称(或数据库名称)"), node: str = Query(..., description="节点ID") ) -> ChangeSet: """删除水源。 从指定网络中删除指定节点的水源。 """ props = {"node": node} return delete_source(network, ChangeSet(props)) @router.get("/getreactionschema/", summary="获取反应架构", description="获取网络中反应对象的架构定义") async def fastapi_get_reaction_schema(network: str = Query(..., description="管网名称(或数据库名称)")) -> dict[str, dict[str, Any]]: """获取反应架构。 返回指定网络中反应对象的属性架构定义。 """ return get_reaction_schema(network) @router.get("/getreaction/", summary="获取反应属性", description="获取指定网络中的反应属性信息") async def fastapi_get_reaction(network: str = Query(..., description="管网名称(或数据库名称)")) -> dict[str, Any]: """获取反应属性。 返回指定网络中的反应属性信息。 """ return get_reaction(network) @router.post("/setreaction/", response_model=None, summary="设置反应属性", description="更新指定网络中的反应属性") async def fastapi_set_reaction( network: str = Query(..., description="管网名称(或数据库名称)"), req: Request = None ) -> ChangeSet: """设置反应属性。 更新指定网络中的反应属性值。 """ props = await req.json() return set_reaction(network, ChangeSet(props)) @router.get("/getpipereactionschema/", summary="获取管道反应架构", description="获取网络中管道反应对象的架构定义") async def fastapi_get_pipe_reaction_schema(network: str = Query(..., description="管网名称(或数据库名称)")) -> dict[str, dict[str, Any]]: """获取管道反应架构。 返回指定网络中管道反应对象的属性架构定义。 """ return get_pipe_reaction_schema(network) @router.get("/getpipereaction/", summary="获取管道反应属性", description="获取指定管道的反应属性信息") async def fastapi_get_pipe_reaction( network: str = Query(..., description="管网名称(或数据库名称)"), pipe: str = Query(..., description="管道ID") ) -> dict[str, Any]: """获取管道反应属性。 返回指定管道的反应属性信息。 """ return get_pipe_reaction(network, pipe) @router.post("/setpipereaction/", response_model=None, summary="设置管道反应属性", description="更新指定管道的反应属性") async def fastapi_set_pipe_reaction( network: str = Query(..., description="管网名称(或数据库名称)"), req: Request = None ) -> ChangeSet: """设置管道反应属性。 更新指定管道的反应属性值。 """ props = await req.json() return set_pipe_reaction(network, ChangeSet(props)) @router.get("/gettankreactionschema/", summary="获取水池反应架构", description="获取网络中水池反应对象的架构定义") async def fastapi_get_tank_reaction_schema(network: str = Query(..., description="管网名称(或数据库名称)")) -> dict[str, dict[str, Any]]: """获取水池反应架构。 返回指定网络中水池反应对象的属性架构定义。 """ return get_tank_reaction_schema(network) @router.get("/gettankreaction/", summary="获取水池反应属性", description="获取指定水池的反应属性信息") async def fastapi_get_tank_reaction( network: str = Query(..., description="管网名称(或数据库名称)"), tank: str = Query(..., description="水池ID") ) -> dict[str, Any]: """获取水池反应属性。 返回指定水池的反应属性信息。 """ return get_tank_reaction(network, tank) @router.post("/settankreaction/", response_model=None, summary="设置水池反应属性", description="更新指定水池的反应属性") async def fastapi_set_tank_reaction( network: str = Query(..., description="管网名称(或数据库名称)"), req: Request = None ) -> ChangeSet: """设置水池反应属性。 更新指定水池的反应属性值。 """ props = await req.json() return set_tank_reaction(network, ChangeSet(props)) @router.get("/getmixingschema/", summary="获取混合架构", description="获取网络中混合对象的架构定义") async def fastapi_get_mixing_schema(network: str = Query(..., description="管网名称(或数据库名称)")) -> dict[str, dict[str, Any]]: """获取混合架构。 返回指定网络中混合对象的属性架构定义。 """ return get_mixing_schema(network) @router.get("/getmixing/", summary="获取混合属性", description="获取指定水池的混合属性信息") async def fastapi_get_mixing( network: str = Query(..., description="管网名称(或数据库名称)"), tank: str = Query(..., description="水池ID") ) -> dict[str, Any]: """获取混合属性。 返回指定水池的混合属性信息。 """ return get_mixing(network, tank) @router.post("/setmixing/", response_model=None, summary="设置混合属性", description="更新指定水池的混合属性") async def fastapi_set_mixing( network: str = Query(..., description="管网名称(或数据库名称)"), req: Request = None ) -> ChangeSet: """设置混合属性。 更新指定水池的混合属性值。 """ props = await req.json() return api.set_mixing(network, ChangeSet(props)) @router.post("/addmixing/", response_model=None, summary="添加混合", description="在网络中添加一个新的混合") async def fastapi_add_mixing( network: str = Query(..., description="管网名称(或数据库名称)"), req: Request = None ) -> ChangeSet: """添加混合。 在指定网络中创建一个新的混合,并设置其初始属性。 """ props = await req.json() return add_mixing(network, ChangeSet(props)) @router.post("/deletemixing/", response_model=None, summary="删除混合", description="从网络中删除指定的混合") async def fastapi_delete_mixing( network: str = Query(..., description="管网名称(或数据库名称)"), req: Request = None ) -> ChangeSet: """删除混合。 从指定网络中删除指定的混合及其相关数据。 """ props = await req.json() return delete_mixing(network, ChangeSet(props))