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 *
from .s0_base import *
MIXING_MODEL_MIXED = 'MIXED'
@@ -40,7 +40,7 @@ class Mixing(object):
return { 'type': self.type, 'tank': self.tank }
def set_mixing_cache(name: str, cs: ChangeSet) -> DbChangeSet:
def set_mixing_cmd(name: str, cs: ChangeSet) -> DbChangeSet:
old = Mixing(get_mixing(name, cs.operations[0]['tank']))
raw_new = get_mixing(name, cs.operations[0]['tank'])
@@ -61,10 +61,10 @@ def set_mixing_cache(name: str, cs: ChangeSet) -> DbChangeSet:
def set_mixing(name: str, cs: ChangeSet) -> ChangeSet:
return execute_command(name, set_mixing_cache(name, cs))
return execute_command(name, set_mixing_cmd(name, cs))
def add_mixing_cache(name: str, cs: ChangeSet) -> DbChangeSet:
def add_mixing_cmd(name: str, cs: ChangeSet) -> DbChangeSet:
new = Mixing(cs.operations[0])
redo_sql = f"insert into mixing (tank, model, value) values ({new.f_tank}, {new.f_model}, {new.f_value});"
@@ -77,10 +77,10 @@ def add_mixing_cache(name: str, cs: ChangeSet) -> DbChangeSet:
def add_mixing(name: str, cs: ChangeSet) -> ChangeSet:
return execute_command(name, add_mixing_cache(name, cs))
return execute_command(name, add_mixing_cmd(name, cs))
def delete_mixing_cache(name: str, cs: ChangeSet) -> DbChangeSet:
def delete_mixing_cmd(name: str, cs: ChangeSet) -> DbChangeSet:
old = Mixing(get_mixing(name, cs.operations[0]['tank']))
redo_sql = f"delete from mixing where tank = {old.f_tank};"
@@ -93,7 +93,7 @@ def delete_mixing_cache(name: str, cs: ChangeSet) -> DbChangeSet:
def delete_mixing(name: str, cs: ChangeSet) -> ChangeSet:
return execute_command(name, delete_mixing_cache(name, cs))
return execute_command(name, delete_mixing_cmd(name, cs))
class InpMixing:
@@ -129,3 +129,10 @@ def inp_out_mixing(name: str) -> list[str]:
value = obj['value'] if obj['value'] != None else ''
lines.append(f'{tank} {model} {value}')
return lines
def delete_mixing_by_tank(name: str, tank: str) -> ChangeSet:
row = try_read(name, f"select * from mixing where tank = '{tank}'")
if row == None:
return ChangeSet()
return ChangeSet(g_delete_prefix | {'type' : 'mixing', 'tank': tank})