Expose current operation to client
This commit is contained in:
@@ -29,7 +29,7 @@ def _get_parents(name: str, id: int) -> list[int]:
|
||||
ids.append(int(cur.fetchone()['parent']))
|
||||
return ids
|
||||
|
||||
def _get_current_operation(name: str) -> int:
|
||||
def get_current_operation(name: str) -> int:
|
||||
with conn[name].cursor(row_factory=dict_row) as cur:
|
||||
cur.execute(f"select id from current_operation")
|
||||
return int(cur.fetchone()['id'])
|
||||
@@ -40,7 +40,7 @@ def _update_current_operation(name: str, old_id: int, id: int) -> None:
|
||||
|
||||
def _add_redo_undo(name: str, redo: str, undo: str) -> int:
|
||||
with conn[name].cursor(row_factory=dict_row) as cur:
|
||||
parent = _get_current_operation(name)
|
||||
parent = get_current_operation(name)
|
||||
cur.execute(f"insert into operation (id, redo, undo, parent) values (default, '{redo}', '{undo}', {parent})")
|
||||
cur.execute("select max(id) from operation")
|
||||
return int(cur.fetchone()['max'])
|
||||
@@ -73,11 +73,11 @@ def _execute(name: str, sql: str) -> None:
|
||||
|
||||
def add_operation(name: str, redo: str, undo: str) -> None:
|
||||
curr = _add_redo_undo(name, redo, undo)
|
||||
old = _get_current_operation(name)
|
||||
old = get_current_operation(name)
|
||||
_update_current_operation(name, old, curr)
|
||||
|
||||
def execute_undo(name: str, discard: bool = False) -> None:
|
||||
curr = _get_current_operation(name)
|
||||
curr = get_current_operation(name)
|
||||
|
||||
# transaction control
|
||||
if have_transaction(name):
|
||||
@@ -106,7 +106,7 @@ def execute_undo(name: str, discard: bool = False) -> None:
|
||||
_remove_operation(name, curr)
|
||||
|
||||
def execute_redo(name: str) -> None:
|
||||
curr = _get_current_operation(name)
|
||||
curr = get_current_operation(name)
|
||||
redoChild = _query_redo_child(name, curr)
|
||||
if redoChild == None:
|
||||
print("nothing to redo!")
|
||||
@@ -132,7 +132,7 @@ def take_snapshot(name: str, tag: str) -> None:
|
||||
print('Non empty tag is expected!')
|
||||
return
|
||||
|
||||
curr = _get_current_operation(name)
|
||||
curr = get_current_operation(name)
|
||||
|
||||
with conn[name].cursor() as cur:
|
||||
cur.execute(f"insert into snapshot_operation (id, tag) values ({curr}, '{tag}')")
|
||||
@@ -146,7 +146,7 @@ def pick_snapshot(name: str, tag: str) -> None:
|
||||
print('No such snapshot!')
|
||||
return
|
||||
|
||||
curr = _get_current_operation(name)
|
||||
curr = get_current_operation(name)
|
||||
curr_parents = _get_parents(name, curr)
|
||||
|
||||
with conn[name].cursor(row_factory=dict_row) as cur:
|
||||
@@ -192,7 +192,7 @@ def start_transaction(name: str, strict: bool = False) -> None:
|
||||
print("Only support single transaction now, please commit/abort current transaction!")
|
||||
return
|
||||
|
||||
curr = _get_current_operation(name)
|
||||
curr = get_current_operation(name)
|
||||
|
||||
with conn[name].cursor() as cur:
|
||||
cur.execute(f"insert into transaction_operation (id, strict) values ({curr}, {strict});")
|
||||
@@ -211,7 +211,7 @@ def abort_transaction(name: str) -> None:
|
||||
|
||||
tran = _get_current_transaction_id(name)
|
||||
|
||||
curr = _get_current_operation(name)
|
||||
curr = get_current_operation(name)
|
||||
curr_parents = _get_parents(name, curr)
|
||||
|
||||
for i in range(curr_parents.index(tran)):
|
||||
|
||||
Reference in New Issue
Block a user