31 lines
893 B
Python
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,
|
|
)
|