Add API to get all node properties

This commit is contained in:
DingZQ
2025-03-29 17:08:31 +08:00
parent d1687b8464
commit 0431f4d82e
6 changed files with 91 additions and 3 deletions

View File

@@ -37,14 +37,14 @@ from .s0_base import get_major_nodes, get_major_pipes
from .s1_title import get_title_schema, get_title, set_title
from .s2_junctions import get_junction_schema, add_junction, get_junction, set_junction
from .s2_junctions import get_junction_schema, add_junction, get_junction, set_junction, get_all_junctions
from .batch_api import delete_junction_cascade
from .s3_reservoirs import get_reservoir_schema, add_reservoir, get_reservoir, set_reservoir
from .s3_reservoirs import get_reservoir_schema, add_reservoir, get_reservoir, set_reservoir, get_all_reservoirs
from .batch_api import delete_reservoir_cascade
from .s4_tanks import OVERFLOW_YES, OVERFLOW_NO
from .s4_tanks import get_tank_schema, add_tank, get_tank, set_tank
from .s4_tanks import get_tank_schema, add_tank, get_tank, set_tank, get_all_tanks
from .batch_api import delete_tank_cascade
from .s5_pipes import PIPE_STATUS_OPEN, PIPE_STATUS_CLOSED, PIPE_STATUS_CV

View File

@@ -24,6 +24,23 @@ def get_junction(name: str, id: str) -> dict[str, Any]:
d['links'] = get_node_links(name, id)
return d
# DingZQ, 2025-03-29
def get_all_junctions(name: str) -> list[dict[str, Any]]:
rows = read_all(name, f"select * from junctions")
if rows == None:
return []
result = []
for row in rows:
d = {}
d['id'] = str(row['id'])
d['x'] = float(row['x'])
d['y'] = float(row['y'])
d['elevation'] = float(row['elevation'])
d['links'] = get_node_links(name, row['id'])
result.append(d)
return result
class Junction(object):
def __init__(self, input: dict[str, Any]) -> None:

View File

@@ -26,6 +26,24 @@ def get_reservoir(name: str, id: str) -> dict[str, Any]:
d['links'] = get_node_links(name, id)
return d
# DingZQ, 2025-03-29
def get_all_reservoirs(name: str) -> list[dict[str, Any]]:
rows = read_all(name, f"select * from reservoirs")
if rows == None:
return []
result = []
for row in rows:
d = {}
d['id'] = str(row['id'])
d['x'] = float(row['x'])
d['y'] = float(row['y'])
d['head'] = float(row['head']) if row['head'] != None else None
d['pattern'] = str(row['pattern']) if row['pattern'] != None else None
d['links'] = get_node_links(name, row['id'])
result.append(d)
return result
class Reservoir(object):
def __init__(self, input: dict[str, Any]) -> None:

View File

@@ -42,6 +42,30 @@ def get_tank(name: str, id: str) -> dict[str, Any]:
d['links'] = get_node_links(name, id)
return d
# DingZQ, 2025-03-29
def get_all_tanks(name: str) -> list[dict[str, Any]]:
rows = read_all(name, f"select * from tanks")
if rows == None:
return []
result = []
for row in rows:
d = {}
d['id'] = str(row['id'])
d['x'] = float(row['x'])
d['y'] = float(row['y'])
d['elevation'] = float(row['elevation'])
d['init_level'] = float(row['init_level'])
d['min_level'] = float(row['min_level'])
d['max_level'] = float(row['max_level'])
d['diameter'] = float(row['diameter'])
d['min_vol'] = float(row['min_vol'])
d['vol_curve'] = str(row['vol_curve']) if row['vol_curve'] != None else None
d['overflow'] = str(row['overflow']) if row['overflow'] != None else None
d['links'] = get_node_links(name, row['id'])
result.append(d)
return result
class Tank(object):
def __init__(self, input: dict[str, Any]) -> None: