181 lines
7.3 KiB
Python
181 lines
7.3 KiB
Python
from fastapi import APIRouter, Request, Query, Path, Body, Response
|
|
from typing import Any, List, Dict, Union
|
|
from app.services.tjnetwork import (
|
|
Any,
|
|
ChangeSet,
|
|
add_label,
|
|
add_vertex,
|
|
delete_label,
|
|
delete_vertex,
|
|
get_all_vertex_links,
|
|
get_all_vertices,
|
|
get_backdrop,
|
|
get_backdrop_schema,
|
|
get_label,
|
|
get_label_schema,
|
|
get_vertex,
|
|
get_vertex_schema,
|
|
set_backdrop,
|
|
set_label,
|
|
set_vertex,
|
|
)
|
|
from fastapi.responses import PlainTextResponse
|
|
import json
|
|
|
|
router = APIRouter()
|
|
|
|
@router.get("/getvertexschema/", summary="获取图形元素架构", description="获取网络中图形元素对象的架构定义")
|
|
async def fastapi_get_vertex_schema(network: str = Query(..., description="管网名称(或数据库名称)")) -> dict[str, dict[str, Any]]:
|
|
"""获取图形元素架构。
|
|
|
|
返回指定网络中图形元素对象的属性架构定义。
|
|
"""
|
|
return get_vertex_schema(network)
|
|
|
|
@router.get("/getvertexproperties/", summary="获取图形元素属性", description="获取指定图形元素的属性信息")
|
|
async def fastapi_get_vertex_properties(
|
|
network: str = Query(..., description="管网名称(或数据库名称)"),
|
|
link: str = Query(..., description="图形元素链接")
|
|
) -> dict[str, Any]:
|
|
"""获取图形元素属性。
|
|
|
|
返回指定图形元素的所有属性信息。
|
|
"""
|
|
return get_vertex(network, link)
|
|
|
|
@router.post("/setvertexproperties/", response_model=None, summary="设置图形元素属性", description="更新指定图形元素的属性")
|
|
async def fastapi_set_vertex_properties(
|
|
network: str = Query(..., description="管网名称(或数据库名称)"),
|
|
req: Request = Body(...)
|
|
) -> ChangeSet:
|
|
"""设置图形元素属性。
|
|
|
|
更新指定图形元素的属性值。
|
|
"""
|
|
props = await req.json()
|
|
return set_vertex(network, ChangeSet(props))
|
|
|
|
@router.post("/addvertex/", response_model=None, summary="添加图形元素", description="在网络中添加一个新的图形元素")
|
|
async def fastapi_add_vertex(
|
|
network: str = Query(..., description="管网名称(或数据库名称)"),
|
|
req: Request = Body(...)
|
|
) -> ChangeSet:
|
|
"""添加图形元素。
|
|
|
|
在指定网络中创建一个新的图形元素,并设置其初始属性。
|
|
"""
|
|
props = await req.json()
|
|
return add_vertex(network, ChangeSet(props))
|
|
|
|
@router.post("/deletevertex/", response_model=None, summary="删除图形元素", description="从网络中删除指定的图形元素")
|
|
async def fastapi_delete_vertex(
|
|
network: str = Query(..., description="管网名称(或数据库名称)"),
|
|
req: Request = Body(...)
|
|
) -> ChangeSet:
|
|
"""删除图形元素。
|
|
|
|
从指定网络中删除指定的图形元素及其相关数据。
|
|
"""
|
|
props = await req.json()
|
|
return delete_vertex(network, ChangeSet(props))
|
|
|
|
@router.get("/getallvertexlinks/", response_class=PlainTextResponse, summary="获取所有图形元素链接", description="获取网络中的所有图形元素链接列表")
|
|
async def fastapi_get_all_vertex_links(network: str = Query(..., description="管网名称(或数据库名称)")) -> list[str]:
|
|
"""获取所有图形元素链接。
|
|
|
|
返回指定网络中的所有图形元素链接列表。
|
|
"""
|
|
return json.dumps(get_all_vertex_links(network))
|
|
|
|
@router.get("/getallvertices/", response_class=PlainTextResponse, summary="获取所有图形元素", description="获取网络中的所有图形元素详细信息")
|
|
async def fastapi_get_all_vertices(network: str = Query(..., description="管网名称(或数据库名称)")) -> list[dict[str, Any]]:
|
|
"""获取所有图形元素。
|
|
|
|
返回指定网络中的所有图形元素详细信息。
|
|
"""
|
|
return json.dumps(get_all_vertices(network))
|
|
|
|
@router.get("/getlabelschema/", summary="获取标签架构", description="获取网络中标签对象的架构定义")
|
|
async def fastapi_get_label_schema(network: str = Query(..., description="管网名称(或数据库名称)")) -> dict[str, dict[str, Any]]:
|
|
"""获取标签架构。
|
|
|
|
返回指定网络中标签对象的属性架构定义。
|
|
"""
|
|
return get_label_schema(network)
|
|
|
|
@router.get("/getlabelproperties/", summary="获取标签属性", description="获取指定坐标处的标签属性信息")
|
|
async def fastapi_get_label_properties(
|
|
network: str = Query(..., description="管网名称(或数据库名称)"),
|
|
x: float = Query(..., description="X坐标"),
|
|
y: float = Query(..., description="Y坐标")
|
|
) -> dict[str, Any]:
|
|
"""获取标签属性。
|
|
|
|
返回指定坐标处的标签属性信息。
|
|
"""
|
|
return get_label(network, x, y)
|
|
|
|
@router.post("/setlabelproperties/", response_model=None, summary="设置标签属性", description="更新指定标签的属性")
|
|
async def fastapi_set_label_properties(
|
|
network: str = Query(..., description="管网名称(或数据库名称)"),
|
|
req: Request = Body(...)
|
|
) -> ChangeSet:
|
|
"""设置标签属性。
|
|
|
|
更新指定标签的属性值。
|
|
"""
|
|
props = await req.json()
|
|
return set_label(network, ChangeSet(props))
|
|
|
|
@router.post("/addlabel/", response_model=None, summary="添加标签", description="在网络中添加一个新的标签")
|
|
async def fastapi_add_label(
|
|
network: str = Query(..., description="管网名称(或数据库名称)"),
|
|
req: Request = Body(...)
|
|
) -> ChangeSet:
|
|
"""添加标签。
|
|
|
|
在指定网络中创建一个新的标签,并设置其初始属性。
|
|
"""
|
|
props = await req.json()
|
|
return add_label(network, ChangeSet(props))
|
|
|
|
@router.post("/deletelabel/", response_model=None, summary="删除标签", description="从网络中删除指定的标签")
|
|
async def fastapi_delete_label(
|
|
network: str = Query(..., description="管网名称(或数据库名称)"),
|
|
req: Request = Body(...)
|
|
) -> ChangeSet:
|
|
"""删除标签。
|
|
|
|
从指定网络中删除指定的标签及其相关数据。
|
|
"""
|
|
props = await req.json()
|
|
return delete_label(network, ChangeSet(props))
|
|
|
|
@router.get("/getbackdropschema/", summary="获取背景架构", description="获取网络中背景对象的架构定义")
|
|
async def fastapi_get_backdrop_schema(network: str = Query(..., description="管网名称(或数据库名称)")) -> dict[str, dict[str, Any]]:
|
|
"""获取背景架构。
|
|
|
|
返回指定网络中背景对象的属性架构定义。
|
|
"""
|
|
return get_backdrop_schema(network)
|
|
|
|
@router.get("/getbackdropproperties/", summary="获取背景属性", description="获取指定网络的背景属性信息")
|
|
async def fastapi_get_backdrop_properties(network: str = Query(..., description="管网名称(或数据库名称)")) -> dict[str, Any]:
|
|
"""获取背景属性。
|
|
|
|
返回指定网络的背景属性信息。
|
|
"""
|
|
return get_backdrop(network)
|
|
|
|
@router.post("/setbackdropproperties/", response_model=None, summary="设置背景属性", description="更新指定网络的背景属性")
|
|
async def fastapi_set_backdrop_properties(
|
|
network: str = Query(..., description="管网名称(或数据库名称)"),
|
|
req: Request = Body(...)
|
|
) -> ChangeSet:
|
|
"""设置背景属性。
|
|
|
|
更新指定网络的背景属性值。
|
|
"""
|
|
props = await req.json()
|
|
return set_backdrop(network, ChangeSet(props))
|