Support cascade deletion

This commit is contained in:
WQY\qiong
2023-02-04 13:45:14 +08:00
parent 633a616d39
commit 804e1c7796
38 changed files with 1272 additions and 707 deletions

View File

@@ -1,4 +1,4 @@
from .operation import *
from .database import *
element_schema = {'type': 'str' , 'optional': True , 'readonly': False}
@@ -19,7 +19,7 @@ def get_energy(name: str) -> dict[str, Any]:
return d
def set_energy_cache(name: str, cs: ChangeSet) -> DbChangeSet:
def set_energy_cmd(name: str, cs: ChangeSet) -> DbChangeSet:
raw_old = get_energy(name)
old = {}
@@ -54,7 +54,7 @@ def set_energy_cache(name: str, cs: ChangeSet) -> DbChangeSet:
def set_energy(name: str, cs: ChangeSet) -> ChangeSet:
return execute_command(name, set_energy_cache(name, cs))
return execute_command(name, set_energy_cmd(name, cs))
def get_pump_energy_schema(name: str) -> dict[str, dict[str, Any]]:
@@ -94,7 +94,7 @@ class PumpEnergy(object):
return { 'type': self.type, 'pump': self.pump, 'price': self.price, 'pattern': self.pattern, 'effic': self.effic }
def set_pump_energy_cache(name: str, cs: ChangeSet) -> DbChangeSet:
def set_pump_energy_cmd(name: str, cs: ChangeSet) -> DbChangeSet:
old = PumpEnergy(get_pump_energy(name, cs.operations[0]['pump']))
raw_new = get_pump_energy(name, cs.operations[0]['pump'])
@@ -128,7 +128,7 @@ def set_pump_energy_cache(name: str, cs: ChangeSet) -> DbChangeSet:
def set_pump_energy(name: str, cs: ChangeSet) -> ChangeSet:
return execute_command(name, set_pump_energy_cache(name, cs))
return execute_command(name, set_pump_energy_cmd(name, cs))
def inp_in_energy(section: list[str]) -> ChangeSet:
@@ -192,3 +192,42 @@ def inp_out_energy(name: str) -> list[str]:
lines.append(f'PUMP {pump} EFFIC {value}')
return lines
def delete_pump_energy_by_pump(name: str, pump: str) -> ChangeSet:
row1 = try_read(name, f"select * from energy_pump_price where pump = '{pump}'")
row2 = try_read(name, f"select * from energy_pump_pattern where pump = '{pump}'")
row3 = try_read(name, f"select * from energy_pump_effic where pump = '{pump}'")
if row1 == None and row2 == None and row3 == None:
return ChangeSet()
return ChangeSet(g_update_prefix | {'type': 'pump_energy', 'pump' : pump, 'price': None, 'pattern': None, 'effic': None})
def unset_pump_energy_by_pattern(name: str, pattern: str) -> ChangeSet:
cs = ChangeSet()
rows = read_all(name, f"select * from energy_pump_pattern where pattern = '{pattern}'")
for row in rows:
pump = row['pump']
row1 = try_read(name, f"select * from energy_pump_price where pump = '{pump}'")
price = float(row1['price']) if row1 != None else None
row2 = try_read(name, f"select * from energy_pump_effic where pump = '{pump}'")
effic = str(row2['effic']) if row2 != None else None
cs.append(g_update_prefix | {'type': 'pump_energy', 'pump' : pump, 'price': price, 'pattern': None, 'effic': effic})
return ChangeSet()
def unset_pump_energy_by_curve(name: str, curve: str) -> ChangeSet:
cs = ChangeSet()
rows = read_all(name, f"select * from energy_pump_effic where effic = '{curve}'")
for row in rows:
pump = row['pump']
row1 = try_read(name, f"select * from energy_pump_price where pump = '{pump}'")
price = float(row1['price']) if row1 != None else None
row2 = try_read(name, f"select * from energy_pump_pattern where pump = '{pump}'")
pattern = str(row2['pattern']) if row2 != None else None
cs.append(g_update_prefix | {'type': 'pump_energy', 'pump' : pump, 'price': price, 'pattern': pattern, 'effic': None})
return ChangeSet()