Return empty change set

This commit is contained in:
wqy
2022-09-17 18:31:00 +08:00
parent a72115e15f
commit b52515b26f
8 changed files with 47 additions and 50 deletions

View File

@@ -96,7 +96,7 @@ def get_patterns(name: str) -> list[str]:
def add_node(name: str, node_type: str, id: str, x: float, y: float, table_sql: str, table_undo_sql: str) -> ChangeSet:
if is_node(name, id):
return
return ChangeSet()
with conn[name].cursor() as cur:
sql = f"insert into _node (id, type) values ('{id}', '{node_type}'); "
@@ -117,7 +117,7 @@ def add_node(name: str, node_type: str, id: str, x: float, y: float, table_sql:
def delete_node(name: str, node_type: str, id: str, table_sql: str, table_undo_sql: str) -> ChangeSet:
if not is_node(name, id):
return
return ChangeSet()
with conn[name].cursor(row_factory=dict_row) as cur:
cur.execute(f"select * from coordinates where node = '{id}'")
@@ -145,7 +145,7 @@ def delete_node(name: str, node_type: str, id: str, table_sql: str, table_undo_s
def add_link(name: str, link_type: str, id: str, table_sql: str, table_undo_sql: str) -> ChangeSet:
if is_link(name, id):
return
return ChangeSet()
with conn[name].cursor() as cur:
sql = f"insert into _link (id, type) values ('{id}', '{link_type}'); "
@@ -164,7 +164,7 @@ def add_link(name: str, link_type: str, id: str, table_sql: str, table_undo_sql:
def delete_link(name: str, link_type: str, id: str, table_sql: str, table_undo_sql: str) -> ChangeSet:
if not is_node(name, id):
return
return ChangeSet()
with conn[name].cursor(row_factory=dict_row) as cur:
sql = table_sql

View File

@@ -25,11 +25,12 @@ def get_node_coord(name: str, id: str) -> dict[str, float] | None:
def set_node_coord(name: str, id: str, x: float, y: float) -> ChangeSet:
if not is_junction(name, id):
return
return ChangeSet()
old = get_node_coord(name, id)
if old == None:
return
return ChangeSet()
old_x, old_y = old['x'], old['y']
with conn[name].cursor() as cur:
@@ -42,4 +43,4 @@ def set_node_coord(name: str, id: str, x: float, y: float) -> ChangeSet:
change = ChangeSet()
change.update('junction', id, 'coord', 'point', str({'x': x, 'y': y}))
return change
return change

View File

@@ -17,11 +17,11 @@ def _get_junction(name: str, id: str) -> Row | None:
def delete_junction(name: str, id: str) -> ChangeSet:
if not is_junction(name, id):
return
return ChangeSet()
row = _get_junction(name, id)
if row == None:
return
return ChangeSet()
elevation = row['elevation']
demand = utility.decorate(row['demand'], 'float', True)
@@ -60,11 +60,11 @@ def get_junction_coord(name: str, id: str) -> dict[str, float] | None:
def _set_junction(name: str, id: str, key: str, key_type: str, value: str, optional: bool = False) -> ChangeSet:
if not is_junction(name, id):
return
return ChangeSet()
row = _get_junction(name, id)
if row == None:
return
return ChangeSet()
return utility.update(name, JUNCTION, 'junctions', 'id', id, key, key_type, row[key], value, optional)

View File

@@ -17,11 +17,11 @@ def _get_reservoir(name: str, id: str) -> Row | None:
def delete_reservoir(name: str, id: str) -> ChangeSet:
if not is_reservoir(name, id):
return
return ChangeSet()
row = _get_reservoir(name, id)
if row == None:
return
return ChangeSet()
head = row['head']
pattern = utility.decorate(row['pattern'], 'str', True)
@@ -51,11 +51,11 @@ def get_reservoir_coord(name: str, id: str) -> dict[str, float] | None:
def _set_reservoir(name: str, id: str, key: str, key_type: str, value: str, optional: bool = False) -> ChangeSet:
if not is_reservoir(name, id):
return
return ChangeSet()
row = _get_reservoir(name, id)
if row == None:
return
return ChangeSet()
return utility.update(name, RESERVOIR, 'reservoirs', 'id', id, key, key_type, row[key], value, optional)

View File

@@ -21,11 +21,11 @@ def _get_tank(name: str, id: str) -> Row | None:
def delete_tank(name: str, id: str) -> ChangeSet:
if not is_tank(name, id):
return
return ChangeSet()
row = _get_tank(name, id)
if row == None:
return
return ChangeSet()
elevation = row['elevation']
init_level = row['init_level']
@@ -36,10 +36,10 @@ def delete_tank(name: str, id: str) -> ChangeSet:
vol_curve = utility.decorate(row['vol_curve'], 'str', True)
overflow = utility.decorate(row['overflow'], 'str', True)
sql += f"delete from tanks where id = '{id}';"
sql = f"delete from tanks where id = '{id}';"
undo_sql = f'insert into tanks (id, elevation, init_level, min_level, max_level, diameter, min_vol, vol_curve, overflow) values ("{id}", {elevation}, {init_level}, {min_level}, {max_level}, {diameter}, {min_vol}, {vol_curve}, {overflow});'
return add_node(name, TANK, id, x, y, sql, undo_sql)
return delete_node(name, TANK, id, sql, undo_sql)
def get_tank_elevation(name: str, id: str) -> float | None:
@@ -94,11 +94,11 @@ def get_tank_coord(name: str, id: str) -> dict[str, float] | None:
def _set_tank(name: str, id: str, key: str, key_type: str, value: str, optional: bool = False) -> ChangeSet:
if not is_tank(name, id):
return
return ChangeSet()
row = _get_tank(name, id)
if row == None:
return
return ChangeSet()
return utility.update(name, TANK, 'tanks', 'id', id, key, key_type, row[key], value, optional)
@@ -129,7 +129,7 @@ def set_tank_min_vol(name: str, id: str, min_vol: float) -> ChangeSet:
def set_tank_vol_curve(name: str, id: str, vol_curve: str) -> ChangeSet:
if not is_curve(name, vol_curve):
return ChangeSet
return ChangeSet()
return _set_tank(name, id, 'vol_curve', 'str', vol_curve, True)

View File

@@ -11,9 +11,9 @@ PIPE_STATUS_CV = 'cv'
def add_pipe(name: str, id: str, node1: str, node2: str, length: float = 0, diameter: float = 0, roughness: float = 0, minor_loss: float = 0, status: str = PIPE_STATUS_OPEN) -> ChangeSet:
if not is_node(name, node1):
return
return ChangeSet()
if not is_node(name, node2):
return
return ChangeSet()
sql = f"insert into pipes (id, node1, node2, length, diameter, roughness, minor_loss, status) values ('{id}', '{node1}', '{node2}', {length}, {diameter}, {roughness}, {minor_loss}, '{status}');"
undo_sql = f'delete from pipes where id = "{id}";'
@@ -26,11 +26,11 @@ def _get_pipe(name: str, id: str) -> Row | None:
def delete_pipe(name: str, id: str) -> ChangeSet:
if not is_pipe(name, id):
return
return ChangeSet()
row = _get_pipe(name, id)
if row == None:
return
return ChangeSet()
node1, node2, length, diameter, roughness, minor_loss, status = row['node1'], row['node2'], row['length'], row['diameter'], row['roughness'], row['minor_loss'], row['status']
@@ -77,25 +77,25 @@ def get_pipe_status(name: str, id: str) -> str | None:
def _set_pipe(name: str, id: str, key: str, key_type: str, value: str, optional: bool = False) -> ChangeSet:
if not is_pipe(name, id):
return
return ChangeSet()
row = _get_pipe(name, id)
if row == None:
return
return ChangeSet()
return utility.update(name, PIPE, 'pipes', 'id', id, key, key_type, row[key], value, optional)
def set_pipe_node1(name: str, id: str, node1: str) -> ChangeSet:
if not is_node(name, node1):
return
return ChangeSet()
return _set_pipe(name, id, 'node1', 'str', str(node1))
def set_pipe_node2(name: str, id: str, node2: str) -> ChangeSet:
if not is_node(name, node2):
return
return ChangeSet()
return _set_pipe(name, id, 'node2', 'str', str(node2))

View File

@@ -6,9 +6,9 @@ import utility
def add_pump(name: str, id: str, node1: str, node2: str) -> ChangeSet:
if not is_node(name, node1):
return
return ChangeSet()
if not is_node(name, node2):
return
return ChangeSet()
sql = f"insert into pumps (id, node1, node2) values ('{id}', '{node1}', '{node2}'');"
undo_sql = f'delete from pumps where id = "{id}";'
@@ -21,11 +21,11 @@ def _get_pump(name: str, id: str) -> Row | None:
def delete_pump(name: str, id: str) -> ChangeSet:
if not is_pump(name, id):
return
return ChangeSet()
row = _get_pump(name, id)
if row == None:
return
return ChangeSet()
node1, node2 = row['node1'], row['node2']
@@ -53,25 +53,25 @@ def get_pump_pattern(name: str, id: str) -> str | None: pass
def _set_pump(name: str, id: str, key: str, key_type: str, value: str, optional: bool = False) -> ChangeSet:
if not is_pump(name, id):
return
return ChangeSet()
row = _get_pump(name, id)
if row == None:
return
return ChangeSet()
return utility.update(name, PUMP, 'pumps', 'id', id, key, key_type, row[key], value, optional)
def set_pump_node1(name: str, id: str, node1: str) -> ChangeSet:
if not is_node(name, node1):
return
return ChangeSet()
return _set_pump(name, id, 'node1', 'str', str(node1))
def set_pump_node2(name: str, id: str, node2: str) -> ChangeSet:
if not is_node(name, node2):
return
return ChangeSet()
return _set_pump(name, id, 'node2', 'str', str(node2))

View File

@@ -14,9 +14,9 @@ VALVES_TYPE_GPV = 'gpv'
def add_valve(name: str, id: str, node1: str, node2: str, diameter: float = 0, type: str = VALVES_TYPE_PRV, setting: float = 0, minor_loss: float = 0) -> ChangeSet:
if not is_node(name, node1):
return
return ChangeSet()
if not is_node(name, node2):
return
return ChangeSet()
sql = f"insert into valves (id, node1, node2, diameter, type, setting, minor_loss) values ('{id}', '{node1}', '{node2}', {diameter}, '{type}', {setting}, {minor_loss});"
undo_sql = f'delete from valves where id = "{id}";'
@@ -29,11 +29,11 @@ def _get_valve(name: str, id: str) -> Row | None:
def delete_valve(name: str, id: str) -> ChangeSet:
if not is_valve(name, id):
return
return ChangeSet()
row = _get_valve(name, id)
if row == None:
return
return ChangeSet()
node1, node2, diameter, type, setting, minor_loss = row['node1'], row['node2'], row['diameter'], row['type'], row['setting'], row['minor_loss']
@@ -86,31 +86,27 @@ def _set_valve(name: str, id: str, key: str, key_type: str, value: str, optional
def set_valve_node1(name: str, id: str, node1: str) -> ChangeSet:
if not is_node(name, node1):
return
return ChangeSet()
return _set_valve(name, id, 'node1', 'str', str(node1))
def set_valve_node2(name: str, id: str, node2: str) -> ChangeSet:
if not is_node(name, node2):
return
return ChangeSet()
return _set_valve(name, id, 'node2', 'str', str(node2))
def set_valve_length(name: str, id: str, length: float) -> ChangeSet:
return _set_valve(name, id, 'length', 'float', str(length))
def set_valve_diameter(name: str, id: str, diameter: float) -> ChangeSet:
return _set_valve(name, id, 'diameter', 'float', str(diameter))
def set_valve_type(name: str, id: str, type: float) -> ChangeSet:
def set_valve_type(name: str, id: str, type: str) -> ChangeSet:
if type != VALVES_TYPE_PRV and type != VALVES_TYPE_PSV and type != VALVES_TYPE_PBV and type != VALVES_TYPE_FCV and type != VALVES_TYPE_TCV and type != VALVES_TYPE_GPV:
return ChangeSet()
return _set_valve(name, id, 'type', 'str', str(type))
return _set_valve(name, id, 'type', 'str', type)
def set_valve_setting(name: str, id: str, setting: float) -> ChangeSet: