diff --git a/api/s3_reservoirs.py b/api/s3_reservoirs.py index caf8a53..d3a3d7f 100644 --- a/api/s3_reservoirs.py +++ b/api/s3_reservoirs.py @@ -13,7 +13,9 @@ def get_reservoir_schema(name: str) -> dict[str, dict[str, Any]]: def get_reservoir(name: str, id: str) -> dict[str, Any]: - r = read(name, f"select * from reservoirs where id = '{id}'") + r = try_read(name, f"select * from reservoirs where id = '{id}'") + if r == None: + return {} xy = get_node_coord(name, id) d = {} d['id'] = str(r['id']) @@ -71,6 +73,10 @@ def set_reservoir_cmd(name: str, cs: ChangeSet) -> DbChangeSet: def set_reservoir(name: str, cs: ChangeSet) -> ChangeSet: + if 'id' not in cs.operations[0]: + return ChangeSet() + if get_reservoir(name, cs.operations[0]['id']) == {}: + return ChangeSet() return execute_command(name, set_reservoir_cmd(name, cs)) @@ -92,6 +98,10 @@ def add_reservoir_cmd(name: str, cs: ChangeSet) -> DbChangeSet: def add_reservoir(name: str, cs: ChangeSet) -> ChangeSet: + if 'id' not in cs.operations[0]: + return ChangeSet() + if get_reservoir(name, cs.operations[0]['id']) != {}: + return ChangeSet() return execute_command(name, add_reservoir_cmd(name, cs)) @@ -113,6 +123,10 @@ def delete_reservoir_cmd(name: str, cs: ChangeSet) -> DbChangeSet: def delete_reservoir(name: str, cs: ChangeSet) -> ChangeSet: + if 'id' not in cs.operations[0]: + return ChangeSet() + if get_reservoir(name, cs.operations[0]['id']) == {}: + return ChangeSet() return execute_command(name, delete_reservoir_cmd(name, cs)) diff --git a/test_tjnetwork.py b/test_tjnetwork.py index 1eaf3e1..41ab604 100644 --- a/test_tjnetwork.py +++ b/test_tjnetwork.py @@ -459,6 +459,8 @@ class TestApi: p = 'test_reservoir' self.enter(p) + assert get_reservoir(p, 'r0') == {} + add_reservoir(p, ChangeSet({'id': 'r0', 'x': 0.0, 'y': 10.0, 'head': 20.0})) r0 = get_reservoir(p, 'r0') assert r0['x'] == 0.0 @@ -495,6 +497,8 @@ class TestApi: nodes = get_nodes(p) assert len(nodes) == 0 + assert get_reservoir(p, 'r0') == {} + add_reservoir(p, ChangeSet({'id': 'r1', 'x': 0.0, 'y': 10.0, 'head': 20.0})) add_reservoir(p, ChangeSet({'id': 'r2', 'x': 0.0, 'y': 10.0, 'head': 20.0})) add_reservoir(p, ChangeSet({'id': 'r3', 'x': 0.0, 'y': 10.0, 'head': 20.0}))