Files
TJWaterServerBinary/app/api/v1/endpoints/components/patterns.py
T

96 lines
3.5 KiB
Python

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)