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