From c31ad577a6945b189484ad2172436eb3f50189d7 Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Thu, 12 Feb 2026 12:44:18 +0000 Subject: [PATCH] define class methods to construct domain classes from sqlalchemy models --- backend/domain/plan.py | 9 ++++++++- backend/domain/scenario.py | 7 +++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/backend/domain/plan.py b/backend/domain/plan.py index b14213c1..b3411b10 100644 --- a/backend/domain/plan.py +++ b/backend/domain/plan.py @@ -1,8 +1,9 @@ +from __future__ import annotations from datetime import datetime from typing import Optional from backend.app.db.models.portfolio import Epc -from backend.app.db.models.recommendations import PlanTypeEnum +from backend.app.db.models.recommendations import PlanModel, PlanTypeEnum, ScenarioModel from backend.domain.scenario import Scenario @@ -28,3 +29,9 @@ class Plan: valuation_increase: Optional[float] = None cost_of_works: Optional[float] = None contingency_cost: Optional[float] = None + + @classmethod + def from_sqlalchemy( + cls, plan_model: PlanModel, scenario_model: ScenarioModel + ) -> Plan: + raise NotImplementedError diff --git a/backend/domain/scenario.py b/backend/domain/scenario.py index 4a15fc09..f4d639cb 100644 --- a/backend/domain/scenario.py +++ b/backend/domain/scenario.py @@ -1,6 +1,9 @@ +from __future__ import annotations from datetime import datetime from typing import Optional +from backend.app.db.models.recommendations import ScenarioModel + class Scenario: name: str @@ -44,3 +47,7 @@ class Scenario: valuation_return_on_ivestment: Optional[str] = None property_valuation_increase: Optional[float] = None labour_days: Optional[float] = None + + @classmethod + def from_sqlalchemy(cls, scenario_model: ScenarioModel) -> Scenario: + raise NotImplementedError