mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-22 08:48:38 +00:00
32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
from __future__ import annotations
|
|
|
|
from abc import ABC, abstractmethod
|
|
|
|
from domain.modelling.plan import Plan
|
|
|
|
|
|
class PlanRepository(ABC):
|
|
"""Persists a Plan (and its Plan Measures) for a Property + Scenario.
|
|
|
|
A re-run INSERTs a fresh Plan and keeps the prior one as history rather than
|
|
deleting it. When the new Plan is the default, prior default Plans for the
|
|
same (Property, Scenario) are demoted to `is_default=False`, so the current
|
|
Plan is the one with `is_default=True` (ADR-0012 / ADR-0017). `portfolio_id`
|
|
and `is_default` are supplied by the orchestrator (the former from the
|
|
trigger, the latter from the Scenario).
|
|
"""
|
|
|
|
@abstractmethod
|
|
def save(
|
|
self,
|
|
plan: Plan,
|
|
*,
|
|
property_id: int,
|
|
scenario_id: int,
|
|
portfolio_id: int,
|
|
is_default: bool,
|
|
) -> int:
|
|
"""Persist ``plan`` and return its Plan id. Keeps prior Plans for
|
|
``(property_id, scenario_id)`` as history; when ``is_default`` is True,
|
|
demotes those prior Plans to ``is_default=False``."""
|
|
...
|