33 lines
815 B
Python
33 lines
815 B
Python
"""
|
|
Interfaces del dominio.
|
|
El dominio define QUÉ necesita, no CÓMO se implementa.
|
|
La capa de Datos implementa estas interfaces.
|
|
"""
|
|
from abc import ABC, abstractmethod
|
|
from typing import Optional
|
|
|
|
from app.domain.entities.ruta import EstadoRuta, Ruta
|
|
|
|
|
|
class IRutaRepository(ABC):
|
|
|
|
@abstractmethod
|
|
def obtener_ruta(self, ruta_id: str) -> Optional[Ruta]:
|
|
...
|
|
|
|
@abstractmethod
|
|
def obtener_estado(self, ruta_id: str) -> Optional[EstadoRuta]:
|
|
...
|
|
|
|
@abstractmethod
|
|
def guardar_estado(self, estado: EstadoRuta) -> None:
|
|
...
|
|
|
|
@abstractmethod
|
|
def obtener_ruta_por_zona(self, zona_id: str) -> Optional[Ruta]:
|
|
"""
|
|
Devuelve la ruta asignada a una zona.
|
|
Cumple la restricción de 'túnel': el domicilio solo ve su ruta.
|
|
"""
|
|
...
|