agreg-server/server/backend/services/consumption_service.py

31 lines
893 B
Python

from datetime import datetime
from domain.entities.consumption_point import ConsumptionResponse
from domain.exceptions import ValidationError
from domain.value_objects import Granularity
from ports import ReadingQueryRepository
class ConsumptionService:
def __init__(self, repo: ReadingQueryRepository) -> None:
self._repo = repo
def get_consumption(
self,
dev_eui: str,
start: datetime,
end: datetime,
granularity: Granularity,
) -> ConsumptionResponse:
if start > end:
raise ValidationError("'start' doit être inférieur ou égal à 'end'")
points = self._repo.get_consumption(dev_eui, start, end, granularity)
return ConsumptionResponse(
dev_eui=dev_eui,
start=start,
end=end,
granularity=granularity,
points=points,
)