from fastapi import APIRouter, Request, Query, Path, Body from typing import Any, List, Dict, Union from app.services.tjnetwork import ( Any, ChangeSet, add_pattern, delete_pattern, get_pattern, get_pattern_schema, get_patterns, is_pattern, set_pattern, ) router = APIRouter() @router.get("/getpatternschema", summary="获取模式架构", description="获取网络中模式对象的架构定义") async def fastapi_get_pattern_schema(network: str = Query(..., description="管网名称(或数据库名称)")) -> dict[str, dict[str, Any]]: """获取模式架构。 返回指定网络中模式对象的属性架构定义。 """ return get_pattern_schema(network) @router.post("/addpattern/", response_model=None, summary="添加模式", description="在网络中添加一个新的模式") async def fastapi_add_pattern( network: str = Query(..., description="管网名称(或数据库名称)"), pattern: str = Query(..., description="模式ID"), req: Request = None ) -> ChangeSet: """添加模式。 在指定网络中创建一个新的模式,并设置其初始属性。 """ props = await req.json() ps = { "id": pattern, } | props return add_pattern(network, ChangeSet(ps)) @router.post("/deletepattern/", response_model=None, summary="删除模式", description="从网络中删除指定的模式") async def fastapi_delete_pattern( network: str = Query(..., description="管网名称(或数据库名称)"), pattern: str = Query(..., description="模式ID") ) -> ChangeSet: """删除模式。 从指定网络中删除指定的模式及其相关数据。 """ ps = {"id": pattern} return delete_pattern(network, ChangeSet(ps)) @router.get("/getpatternproperties/", summary="获取模式属性", description="获取指定模式的属性信息") async def fastapi_get_pattern_properties( network: str = Query(..., description="管网名称(或数据库名称)"), pattern: str = Query(..., description="模式ID") ) -> dict[str, Any]: """获取模式属性。 返回指定模式的所有属性信息。 """ return get_pattern(network, pattern) @router.post("/setpatternproperties/", response_model=None, summary="设置模式属性", description="更新指定模式的属性") async def fastapi_set_pattern_properties( network: str = Query(..., description="管网名称(或数据库名称)"), pattern: str = Query(..., description="模式ID"), req: Request = None ) -> ChangeSet: """设置模式属性。 更新指定模式的属性值。 """ props = await req.json() ps = {"id": pattern} | props return set_pattern(network, ChangeSet(ps)) @router.get("/ispattern/", summary="检查模式存在性", description="检查指定的模式是否存在") async def fastapi_is_pattern( network: str = Query(..., description="管网名称(或数据库名称)"), pattern: str = Query(..., description="模式ID") ) -> bool: """检查模式是否存在。 判断指定的模式是否在网络中存在。 """ return is_pattern(network, pattern) @router.get("/getpatterns/", summary="获取所有模式", description="获取网络中的所有模式列表") async def fastapi_get_patterns(network: str = Query(..., description="管网名称(或数据库名称)")) -> list[str]: """获取所有模式。 返回指定网络中的所有模式ID列表。 """ return get_patterns(network)