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 antérieur à '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, )