2b6381fa46
- save calibration info into db compare with cali version
51 lines
1.9 KiB
Python
51 lines
1.9 KiB
Python
from sqlalchemy import Table, Column, String, MetaData, ForeignKey, JSON
|
|
from sqlalchemy.sql import select, func
|
|
from sqlalchemy.types import Integer, BigInteger, String, Boolean, TIMESTAMP, Numeric, Float, BINARY, LargeBinary
|
|
from sqlalchemy.dialects.postgresql import JSONB
|
|
|
|
from .base import Base, Session
|
|
|
|
class Device(Base):
|
|
__tablename__ = "devices"
|
|
|
|
id = Column(Integer, primary_key=True)
|
|
name = Column(String(255))
|
|
mac_address = Column(String(255))
|
|
serial_number = Column(String(255))
|
|
configuration = Column(JSONB)
|
|
library = Column(String(255))
|
|
library_version = Column(String(255))
|
|
device_version = Column(String(255))
|
|
type = Column(String(255))
|
|
battery = Column(Integer)
|
|
temperature = Column(Float)
|
|
auto_connect = Column(Boolean)
|
|
connect_priority = Column(Integer)
|
|
connect_time = Column(BigInteger)
|
|
parameter_set = Column(JSONB)
|
|
running = Column(Boolean)
|
|
calibration = Column(LargeBinary)
|
|
calibration_version = Column(Integer, default=-1)
|
|
user_auth = Column(JSONB)
|
|
deleted = Column(Boolean)
|
|
created_at = Column(TIMESTAMP(timezone=True), server_default=func.now())
|
|
updated_at = Column(TIMESTAMP(timezone=True), onupdate=func.now())
|
|
|
|
@classmethod
|
|
def update_device(cls, device, options):
|
|
with Session() as session:
|
|
result = session.query(Device).filter(Device.mac_address == device['mac_address']).first()
|
|
for key, value in options.items():
|
|
setattr(result, key, value)
|
|
session.commit()
|
|
|
|
@classmethod
|
|
def get_device(cls, device):
|
|
with Session() as session:
|
|
result = session.query(Device).filter(Device.mac_address == device['mac_address']).first()
|
|
return result
|
|
|
|
|
|
|
|
# def __repr__(self):
|
|
# return f"User(id={self.id!r}, name={self.name!r}, fullname={self.task!r})" |