From 4837d4ee45626c6968b64063ae342a44c103e498 Mon Sep 17 00:00:00 2001 From: "WQY\\qiong" Date: Thu, 17 Nov 2022 18:32:40 +0800 Subject: [PATCH] Parse [ENERGY] --- api/s15_energy.py | 75 ++++++++++++++++++++++++++++++++++------------- 1 file changed, 54 insertions(+), 21 deletions(-) diff --git a/api/s15_energy.py b/api/s15_energy.py index e9ef691..a573416 100644 --- a/api/s15_energy.py +++ b/api/s15_energy.py @@ -57,27 +57,6 @@ def set_energy(name: str, cs: ChangeSet) -> ChangeSet: return execute_command(name, set_energy_cache(name, cs)) -# def inp_in_energy(section: list[str]) -> ChangeSet: -# cs = g_update_prefix | { 'type' : 'energy' } -# for s in section: -# line = s.upper().strip() -# for key in get_energy_schema('').keys(): -# if line.startswith(key): -# value = line.removeprefix(key).strip() -# cs |= { key : value } -# return ChangeSet(cs) - - -def inp_out_energy(name: str) -> list[str]: - lines = [] - objs = read_all(name, f"select * from energy") - for obj in objs: - key = obj['key'] - value = obj['value'] - lines.append(f'{key} {value}') - return lines - - def get_pump_energy_schema(name: str) -> dict[str, dict[str, Any]]: return { 'pump' : {'type': 'str' , 'optional': False , 'readonly': True }, 'price' : {'type': 'float' , 'optional': True , 'readonly': False}, @@ -150,3 +129,57 @@ def set_pump_energy_cache(name: str, cs: ChangeSet) -> SqlChangeSet: def set_pump_energy(name: str, cs: ChangeSet) -> ChangeSet: return execute_command(name, set_pump_energy_cache(name, cs)) + + +def inp_in_energy(section: list[str]) -> ChangeSet: + cs = ChangeSet() + + for s in section: + tokens = s.strip().split() + + if tokens[0].upper() == 'PUMP': + pump = tokens[1] + key = tokens[2].lower() + value = tokens[3] + if key == 'price': + value = float(value) + cs.append(g_update_prefix | { 'type' : 'pump_energy', 'pump' : pump, key: value }) + + else: + line = s.upper().strip() + for key in get_energy_schema('').keys(): + if line.startswith(key): + value = line.removeprefix(key).strip() + cs.append(g_update_prefix | { 'type' : 'energy', key : value }) + + return cs + + +def inp_out_energy(name: str) -> list[str]: + lines = [] + + objs = read_all(name, f"select * from energy") + for obj in objs: + key = obj['key'] + value = obj['value'] + lines.append(f'{key} {value}') + + objs = read_all(name, f"select * from energy_pump_price") + for obj in objs: + pump = obj['pump'] + value = obj['price'] + lines.append(f'PUMP {pump} PRICE {value}') + + objs = read_all(name, f"select * from energy_pump_pattern") + for obj in objs: + pump = obj['pump'] + value = obj['pattern'] + lines.append(f'PUMP {pump} PATTERN {value}') + + objs = read_all(name, f"select * from energy_pump_effic") + for obj in objs: + pump = obj['pump'] + value = obj['effic'] + lines.append(f'PUMP {pump} EFFIC {value}') + + return lines