Add more api for scada_data

This commit is contained in:
WQY\qiong
2023-02-16 22:14:07 +08:00
parent 93f5321c89
commit 11a5bb4333
3 changed files with 49 additions and 1 deletions

View File

@@ -103,4 +103,4 @@ from .s29_scada_model import SCADA_TYPE_PRESSURE, SCADA_TYPE_DEMAND, SCADA_TYPE_
from .s29_scada_model import SCADA_STATUS_OFFLINE, SCADA_STATUS_ONLINE
from .s29_scada_model import get_scada_model_schema, get_scada_model, set_scada_model, add_scada_model, delete_scada_model
from .s30_scada_data import get_scada_data_schema, get_scada_data, set_scada_data
from .s30_scada_data import get_scada_data_schema, get_scada_data, set_scada_data, add_scada_data, delete_scada_data

View File

@@ -49,3 +49,45 @@ def set_scada_data(name: str, cs: ChangeSet) -> ChangeSet:
result.redo_cs[0] |= g_update_prefix
result.undo_cs[0] |= g_update_prefix
return execute_command(name, result)
def add_scada_data_cmd(name: str, cs: ChangeSet) -> DbChangeSet:
values = cs.operations[0]
device_id = values['device_id']
time = values['time']
value = float(values['value'])
redo_sql = f"insert into scada_data (device_id, time, value) values ('{device_id}', '{time}', {value});"
undo_sql = f"delete from scada_data where device_id = '{device_id}' and time = '{time}';"
redo_cs = g_add_prefix | { 'type': 'scada_data', 'device_id': device_id, 'time': time, 'value': value }
undo_cs = g_delete_prefix | { 'type': 'scada_data', 'device_id': device_id, 'time': time }
return DbChangeSet(redo_sql, undo_sql, [redo_cs], [undo_cs])
def add_scada_data(name: str, cs: ChangeSet) -> ChangeSet:
row = try_read(name, f"select * from scada_data where device_id = '{cs.operations[0]['device_id']}' and time = '{cs.operations[0]['time']}'")
if row != None:
return ChangeSet()
return execute_command(name, add_scada_data_cmd(name, cs))
def delete_scada_data_cmd(name: str, cs: ChangeSet) -> DbChangeSet:
values = cs.operations[0]
device_id = values['device_id']
time = values['time']
value = float(read(name, f"select * from scada_data where device_id = '{device_id}' and time = '{time}'")['value'])
redo_sql = f"delete from scada_data where device_id = '{device_id}' and time = '{time}';"
undo_sql = f"insert into scada_data (device_id, time, value) values ('{device_id}', '{time}', {value});"
redo_cs = g_delete_prefix | { 'type': 'scada_data', 'device_id': device_id, 'time': time }
undo_cs = g_add_prefix | { 'type': 'scada_data', 'device_id': device_id, 'time': time, 'value': value }
return DbChangeSet(redo_sql, undo_sql, [redo_cs], [undo_cs])
def delete_scada_data(name: str, cs: ChangeSet) -> ChangeSet:
row = try_read(name, f"select * from scada_data where device_id = '{cs.operations[0]['device_id']}' and time = '{cs.operations[0]['time']}'")
if row == None:
return ChangeSet()
return execute_command(name, delete_scada_data_cmd(name, cs))

View File

@@ -767,3 +767,9 @@ def get_scada_data(name: str, device_id: str) -> dict[str, Any]:
# time format must be 'YYYY-MM-DD HH:MM:SS'
def set_scada_data(name: str, cs: ChangeSet) -> ChangeSet:
return api.set_scada_data(name, cs)
def add_scada_data(name: str, cs: ChangeSet) -> ChangeSet:
return api.add_scada_data(name, cs)
def delete_scada_data(name: str, cs: ChangeSet) -> ChangeSet:
return api.delete_scada_data(name, cs)