from abc import ABC, abstractmethod from typing import Optional from core.domain.optimization.Optimization import Optimization from core.domain.optimization.OptimizationResult import OptimizationResult from core.types.Id import Id class OptimizationResultRepo(ABC): @abstractmethod def getAll(self) -> list[OptimizationResult]: pass @abstractmethod def getAllIds(self) -> list[Id[OptimizationResult]]: pass @abstractmethod def get(self, id: Id[OptimizationResult]) -> Optional[OptimizationResult]: pass @abstractmethod def post(self, optimizationResult: OptimizationResult) -> OptimizationResult: pass @abstractmethod def getAllByOptimizationId(self, optimizationId) -> list[OptimizationResult]: pass @abstractmethod def getLatestByOptimizationId(self, optimizationId: Id[Optimization]) -> Optional[OptimizationResult]: pass