mirror of
https://github.com/Manuel83/craftbeerpi3
synced 2026-08-10 02:55:27 +02:00
First Refactoring
- Major API Changes in Core Module - Will be changed further. Still work in progress
This commit is contained in:
@@ -0,0 +1,134 @@
|
||||
from modules.core.db import DBModel, get_db
|
||||
|
||||
|
||||
class Kettle(DBModel):
|
||||
__fields__ = ["name","sensor", "heater", "automatic", "logic", "config", "agitator", "target_temp"]
|
||||
__table_name__ = "kettle"
|
||||
__json_fields__ = ["config"]
|
||||
|
||||
class Sensor(DBModel):
|
||||
__fields__ = ["name","type", "config", "hide"]
|
||||
__table_name__ = "sensor"
|
||||
__json_fields__ = ["config"]
|
||||
|
||||
class Config(DBModel):
|
||||
__fields__ = ["type", "value", "description", "options"]
|
||||
__table_name__ = "config"
|
||||
__json_fields__ = ["options"]
|
||||
__priamry_key__ = "name"
|
||||
|
||||
class Actor(DBModel):
|
||||
__fields__ = ["name","type", "config", "hide"]
|
||||
__table_name__ = "actor"
|
||||
__json_fields__ = ["config"]
|
||||
|
||||
class Step(DBModel):
|
||||
__fields__ = ["name","type", "stepstate", "state", "start", "end", "order", "config"]
|
||||
__table_name__ = "step"
|
||||
__json_fields__ = ["config", "stepstate"]
|
||||
__order_by__ = "order"
|
||||
__as_array__ = True
|
||||
|
||||
@classmethod
|
||||
def get_max_order(cls):
|
||||
cur = get_db().cursor()
|
||||
cur.execute("SELECT max(step.'order') as 'order' FROM %s" % cls.__table_name__)
|
||||
r = cur.fetchone()
|
||||
return r.get("order")
|
||||
|
||||
@classmethod
|
||||
def get_by_state(cls, state, order=True):
|
||||
cur = get_db().cursor()
|
||||
cur.execute("SELECT * FROM %s WHERE state = ? ORDER BY %s.'order'" % (cls.__table_name__,cls.__table_name__,), state)
|
||||
r = cur.fetchone()
|
||||
if r is not None:
|
||||
return cls(r)
|
||||
else:
|
||||
return None
|
||||
|
||||
@classmethod
|
||||
def delete_all(cls):
|
||||
cur = get_db().cursor()
|
||||
cur.execute("DELETE FROM %s" % cls.__table_name__)
|
||||
get_db().commit()
|
||||
|
||||
@classmethod
|
||||
def reset_all_steps(cls):
|
||||
cur = get_db().cursor()
|
||||
cur.execute("UPDATE %s SET state = 'I', stepstate = NULL , start = NULL, end = NULL " % cls.__table_name__)
|
||||
get_db().commit()
|
||||
|
||||
@classmethod
|
||||
def update_state(cls, id, state):
|
||||
cur = get_db().cursor()
|
||||
cur.execute("UPDATE %s SET state = ? WHERE id =?" % cls.__table_name__, (state, id))
|
||||
get_db().commit()
|
||||
|
||||
@classmethod
|
||||
def update_step_state(cls, id, state):
|
||||
cur = get_db().cursor()
|
||||
cur.execute("UPDATE %s SET stepstate = ? WHERE id =?" % cls.__table_name__, (json.dumps(state),id))
|
||||
get_db().commit()
|
||||
|
||||
@classmethod
|
||||
def sort(cls, new_order):
|
||||
cur = get_db().cursor()
|
||||
|
||||
for e in new_order:
|
||||
|
||||
cur.execute("UPDATE %s SET '%s' = ? WHERE id = ?" % (cls.__table_name__, "order"), (e[1], e[0]))
|
||||
get_db().commit()
|
||||
|
||||
|
||||
class Fermenter(DBModel):
|
||||
__fields__ = ["name", "brewname", "sensor", "sensor2", "sensor3", "heater", "cooler", "logic", "config", "target_temp"]
|
||||
__table_name__ = "fermenter"
|
||||
__json_fields__ = ["config"]
|
||||
|
||||
class FermenterStep(DBModel):
|
||||
__fields__ = ["name", "days", "hours", "minutes", "temp", "direction", "order", "state", "start", "end", "timer_start", "fermenter_id"]
|
||||
__table_name__ = "fermenter_step"
|
||||
|
||||
@classmethod
|
||||
def get_by_fermenter_id(cls, id):
|
||||
cur = get_db().cursor()
|
||||
cur.execute("SELECT * FROM %s WHERE fermenter_id = ?" % cls.__table_name__,(id,))
|
||||
result = []
|
||||
for r in cur.fetchall():
|
||||
result.append(cls(r))
|
||||
return result
|
||||
|
||||
@classmethod
|
||||
def get_max_order(cls,id):
|
||||
cur = get_db().cursor()
|
||||
cur.execute("SELECT max(fermenter_step.'order') as 'order' FROM %s WHERE fermenter_id = ?" % cls.__table_name__, (id,))
|
||||
r = cur.fetchone()
|
||||
return r.get("order")
|
||||
|
||||
@classmethod
|
||||
def update_state(cls, id, state):
|
||||
cur = get_db().cursor()
|
||||
cur.execute("UPDATE %s SET state = ? WHERE id =?" % cls.__table_name__, (state, id))
|
||||
get_db().commit()
|
||||
|
||||
@classmethod
|
||||
def update_timer(cls, id, timer):
|
||||
cur = get_db().cursor()
|
||||
cur.execute("UPDATE %s SET timer_start = ? WHERE id =?" % cls.__table_name__, (timer, id))
|
||||
get_db().commit()
|
||||
|
||||
@classmethod
|
||||
def get_by_state(cls, state):
|
||||
cur = get_db().cursor()
|
||||
cur.execute("SELECT * FROM %s WHERE state = ?" % cls.__table_name__, state)
|
||||
r = cur.fetchone()
|
||||
if r is not None:
|
||||
return cls(r)
|
||||
else:
|
||||
return None
|
||||
|
||||
@classmethod
|
||||
def reset_all_steps(cls,id):
|
||||
cur = get_db().cursor()
|
||||
cur.execute("UPDATE %s SET state = 'I', start = NULL, end = NULL, timer_start = NULL WHERE fermenter_id = ?" % cls.__table_name__, (id,))
|
||||
get_db().commit()
|
||||
Reference in New Issue
Block a user