From 694bb0b569d806485d98531f97afd709369dadaf Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Tue, 20 Jan 2026 15:57:56 +0000 Subject: [PATCH] Define classes --- backend/condition/domain/asset_condition.py | 11 +++++++++++ backend/condition/domain/element.py | 4 ++++ backend/condition/domain/mapping/lbwf_mapper.py | 9 +++++++++ backend/condition/domain/mapping/mapper.py | 11 +++++++++++ .../parsing/records/lbwf/lbwf_asset_condition.py | 15 ++++++++------- .../condition/parsing/records/lbwf/lbwf_house.py | 4 ++-- 6 files changed, 45 insertions(+), 9 deletions(-) create mode 100644 backend/condition/domain/asset_condition.py create mode 100644 backend/condition/domain/element.py create mode 100644 backend/condition/domain/mapping/lbwf_mapper.py create mode 100644 backend/condition/domain/mapping/mapper.py diff --git a/backend/condition/domain/asset_condition.py b/backend/condition/domain/asset_condition.py new file mode 100644 index 00000000..df87fd9f --- /dev/null +++ b/backend/condition/domain/asset_condition.py @@ -0,0 +1,11 @@ +from dataclasses import dataclass +from typing import Optional + +from backend.condition.domain.element import Element + +@dataclass +class AssetCondition: + uprn: int + element: Element + condition_description: str + renewal_year: Optional[int] = None \ No newline at end of file diff --git a/backend/condition/domain/element.py b/backend/condition/domain/element.py new file mode 100644 index 00000000..89246f9c --- /dev/null +++ b/backend/condition/domain/element.py @@ -0,0 +1,4 @@ +from enum import Enum + +class Element(Enum): + pass \ No newline at end of file diff --git a/backend/condition/domain/mapping/lbwf_mapper.py b/backend/condition/domain/mapping/lbwf_mapper.py new file mode 100644 index 00000000..154f3db4 --- /dev/null +++ b/backend/condition/domain/mapping/lbwf_mapper.py @@ -0,0 +1,9 @@ +from typing import Any, List +from backend.condition.domain.asset_condition import AssetCondition +from backend.condition.domain.mapping.mapper import Mapper + + +class LbwfMapper(Mapper): + + def map_asset_conditions(self, client_data: List[Any]) -> List[AssetCondition]: + raise NotImplementedError \ No newline at end of file diff --git a/backend/condition/domain/mapping/mapper.py b/backend/condition/domain/mapping/mapper.py new file mode 100644 index 00000000..b314e01c --- /dev/null +++ b/backend/condition/domain/mapping/mapper.py @@ -0,0 +1,11 @@ +from abc import ABC, abstractmethod +from typing import Any, List + +from backend.condition.domain.asset_condition import AssetCondition + +class Mapper(ABC): + + @abstractmethod + def map_asset_conditions(self, client_data: List[Any]) -> List[AssetCondition]: + #TODO: client_data should be properly typed + pass \ No newline at end of file diff --git a/backend/condition/parsing/records/lbwf/lbwf_asset_condition.py b/backend/condition/parsing/records/lbwf/lbwf_asset_condition.py index dffd1e53..2b4c4992 100644 --- a/backend/condition/parsing/records/lbwf/lbwf_asset_condition.py +++ b/backend/condition/parsing/records/lbwf/lbwf_asset_condition.py @@ -1,5 +1,6 @@ from dataclasses import dataclass from datetime import date +from typing import Optional @dataclass @@ -16,11 +17,11 @@ class LbwfAssetCondition: element_code_description: str attribute_code: str attribute_code_description: str - element_date_value: str | None = None - element_numerical_value: int | None = None - element_text_value: str | None = None - quantity: int | None = None - install_date: date | None = None - remaining_life: int | None = None - element_comments: str | None = None + element_date_value: Optional[str] = None + element_numerical_value: Optional[int] = None + element_text_value: Optional[str] = None + quantity: Optional[int] = None + install_date: Optional[date] = None + remaining_life: Optional[int] = None + element_comments: Optional[str] = None diff --git a/backend/condition/parsing/records/lbwf/lbwf_house.py b/backend/condition/parsing/records/lbwf/lbwf_house.py index 6db16862..3b472fbe 100644 --- a/backend/condition/parsing/records/lbwf/lbwf_house.py +++ b/backend/condition/parsing/records/lbwf/lbwf_house.py @@ -8,8 +8,8 @@ class LbwfHouse: uprn: int reference: int address: str - epc: str # TODO: make enum - shdf: bool + epc: str # TODO: make enum? + shdf: str house: str fail_decency: int assets: List[LbwfAssetCondition] \ No newline at end of file