Add more api for scada_data
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user