Add methods to get node types

This commit is contained in:
DingZQ
2024-12-18 22:28:57 +08:00
parent 1e43cdb17a
commit f8ac46d80d

View File

@@ -89,11 +89,54 @@ def _get_all(name: str, base_type: str) -> list[str]:
def get_nodes(name: str) -> list[str]:
return _get_all(name, _NODE)
# DingZQ
def _get_nodes_by_type(name: str, type: str) -> list[str]:
ids : list[str] = []
with conn[name].cursor(row_factory=dict_row) as cur:
cur.execute(f"select id from {_NODE} where type = '{type}' order by id")
for record in cur:
ids.append(record['id'])
return ids
# DingZQ
def get_junctions(name: str) -> list[str]:
return _get_nodes_by_type(name, JUNCTION)
# DingZQ
def get_reservoir(name: str) -> list[str]:
return _get_nodes_by_type(name, RESERVOIR)
# DingZQ
def get_tank(name: str) -> list[str]:
return _get_nodes_by_type(name, TANK)
# DingZQ
def get_links(name: str) -> list[str]:
return _get_all(name, _LINK)
# DingZQ
def _get_links_by_type(name: str, type: str) -> list[str]:
ids : list[str] = []
with conn[name].cursor(row_factory=dict_row) as cur:
cur.execute(f"select id from {_LINK} where type = '{type}' order by id")
for record in cur:
ids.append(record['id'])
return ids
# DingZQ
def get_pipes(name: str) -> list[str]:
return _get_links_by_type(name, PIPE)
# DingZQ
def get_pumps(name: str) -> list[str]:
return _get_links_by_type(name, PUMP)
# DingZQ
def get_valves(name: str) -> list[str]:
return _get_links_by_type(name, VALVE)
def get_curves(name: str) -> list[str]:
return _get_all(name, _CURVE)