Files
Graphics-Analitics-Backend/service/leitura_service.py
T

42 lines
1.2 KiB
Python

from model.leitura import Leitura, LeituraNaoEncontrada
from dao.leitura_dao import LeituraDao
class LeituraService:
_instancia = None
@classmethod
def instancia(cls):
if cls._instancia is None:
cls._instancia = cls()
return cls._instancia
def __init__(self):
self.dao = LeituraDao.instancia()
def criar(self, dispositivo_id, payload):
leitura = Leitura(dispositivo_id=dispositivo_id, payload=payload)
return self.dao.criar(leitura)
def listar(self, dispositivo_id, desde=None, ate=None, limite=100):
return self.dao.listar_por_dispositivo(dispositivo_id, desde, ate, limite)
def estatisticas(self, dispositivo_id, campo):
leituras = self.dao.listar_por_dispositivo(dispositivo_id)
valores = [
l.payload[campo] for l in leituras
if campo in l.payload and isinstance(l.payload[campo], (int, float))
]
if not valores:
raise LeituraNaoEncontrada()
return {
"campo": campo,
"contagem": len(valores),
"minimo": min(valores),
"maximo": max(valores),
"media": round(sum(valores) / len(valores), 2)
}