Adiciona funcionalidade de leitura com o dao e o service

This commit is contained in:
Fernanda
2026-04-15 13:36:29 -03:00
parent f53e36a4a4
commit 158b7c2025
3 changed files with 75 additions and 1 deletions
+41
View File
@@ -0,0 +1,41 @@
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)
}