Codice sorgente per gestore_spese.domain.services.spesa_service
"""Servizio di dominio delle spese."""
from __future__ import annotations
from gestore_spese.domain.entities.abstract_spesa import AbstractSpesa
from gestore_spese.domain.repositories.abstract_spesa_repository import (
AbstractSpesaRepository,
)
from gestore_spese.domain.services.abstract_spesa_service import AbstractSpesaService
[documenti]
class SpesaService(AbstractSpesaService):
"""Implementa :class:`AbstractSpesaService` delegando al repository.
Dipende dall'astrazione :class:`AbstractSpesaRepository` (Dependency
Inversion): in questo dominio la logica è semplice, ma il servizio
fornisce il punto di estensione per regole che coinvolgano più entità.
"""
def __init__(self, repository: AbstractSpesaRepository) -> None:
self._repository = repository
[documenti]
def aggiungi_spesa(self, spesa: AbstractSpesa) -> None:
"""Aggiunge una nuova spesa tramite il repository.
:param AbstractSpesa spesa: spesa da aggiungere
"""
self._repository.aggiungi_spesa(spesa)
[documenti]
def ottieni_tutte_le_spese(self) -> list[AbstractSpesa]:
"""Ritorna tutte le spese tramite il repository.
:return: tutte le spese disponibili
:rtype: list[AbstractSpesa]
"""
return self._repository.ottieni_tutte_le_spese()