from psycopg.rows import dict_row, Row from .connection import g_conn_dict as conn _NODE = "_node" _LINK = "_link" _CURVE = "_curve" _PATTERN = "_pattern" JUNCTION = "JUNCTION" RESERVOIR = "RESERVOIR" TANK = "TANK" PIPE = "PIPE" PUMP = "PUMP" VALVE = "VALVE" def _get_from(name: str, id: str, base_type: str) -> Row | None: with conn[name].cursor(row_factory=dict_row) as cur: cur.execute(f"select * from {base_type} where id = '{id}'") return cur.fetchone() def is_node(name: str, id: str) -> bool: return _get_from(name, id, _NODE) != None def is_junction(name: str, id: str) -> bool: row = _get_from(name, id, _NODE) return row != None and row['type'] == JUNCTION def is_reservoir(name: str, id: str) -> bool: row = _get_from(name, id, _NODE) return row != None and row['type'] == RESERVOIR def is_tank(name: str, id: str) -> bool: row = _get_from(name, id, _NODE) return row != None and row['type'] == TANK def is_link(name: str, id: str) -> bool: return _get_from(name, id, _LINK) != {} def is_pipe(name: str, id: str) -> bool: row = _get_from(name, id, _LINK) return row != None and row['type'] == PIPE def is_pump(name: str, id: str) -> bool: row = _get_from(name, id, _LINK) return row != None and row['type'] == PUMP def is_valve(name: str, id: str) -> bool: row = _get_from(name, id, _LINK) return row != None and row['type'] == VALVE def is_curve(name: str, id: str) -> bool: return _get_from(name, id, _CURVE) != None def is_pattern(name: str, id: str) -> bool: return _get_from(name, id, _PATTERN) != None