import json import uuid from abc import abstractmethod from dataclasses import dataclass from sqlalchemy import Engine, BLOB, PrimaryKeyConstraint from sqlmodel import SQLModel, Field, Session, select from typing_extensions import override, Self, Optional from core import Utils from core.domain.optimization.Optimization import Optimization from core.domain.optimization.OptimizationMetrics import OptimizationMetrics from core.repos.OptimizationResultRepo import OptimizationResultRepo from core.types.Id import Id @dataclass class OptimizationMetricsRepo: @abstractmethod def getAll(self) -> list[OptimizationMetrics]: pass @abstractmethod def get(self, id: Id[OptimizationMetrics]) -> Optional[OptimizationMetrics]: pass @abstractmethod def getAllByOptimizationId(self, optimizationId: Id[Optimization]) -> list[OptimizationMetrics]: pass @abstractmethod def post(self, optimizationMetrics: OptimizationMetrics) -> OptimizationMetrics: pass