from abc import ABC, abstractmethod from typing import Optional from core.domain.optimization.Optimization import Optimization from core.domain.optimization.OptimizationState import OptimizationState from core.types.Id import Id from core.types.IntId import IntId class OptimizationRepo(ABC): @abstractmethod def getAll(self) -> list[Optimization]: pass @abstractmethod def get(self, id: Id[Optimization]) -> Optional[Optimization]: pass @abstractmethod def getWithState(self, state: OptimizationState) -> list[Optimization]: pass @abstractmethod def updateFirst(self, fromState: OptimizationState, toState: OptimizationState) -> Optional[Optimization]: pass @abstractmethod def setState(self, id: Id[Optimization], toState: OptimizationState) -> Optional[Optimization]: pass @abstractmethod def getLatestConfirmedByPosta(self, posta: int) -> Optional[Optimization]: pass