mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
29 lines
1 KiB
Python
29 lines
1 KiB
Python
from typing import Any, BinaryIO, List
|
|
from datetime import datetime
|
|
|
|
from backend.condition.domain.element import Element
|
|
from backend.condition.domain.mapping.mapper import Mapper
|
|
from backend.condition.parsing.parser import Parser
|
|
from utils.logger import setup_logger
|
|
from backend.condition.file_type import FileType, detect_file_type
|
|
from backend.condition.parsing.factory import select_parser, select_mapper
|
|
|
|
|
|
def process_file(file_stream: BinaryIO, source_key: str) -> None:
|
|
print(f"[processor] Received file: {source_key}")
|
|
|
|
# Instantiation
|
|
file_type: FileType = detect_file_type(source_key)
|
|
parser: Parser = select_parser(file_type)
|
|
mapper: Mapper = select_mapper(file_type)
|
|
|
|
# Orchestration
|
|
raw_properties: List[Any] = parser.parse(file_stream)
|
|
|
|
survey_year = datetime.now().year # TODO: get this from filepath or elsewhere
|
|
|
|
assets: List[Element] = []
|
|
for p in raw_properties:
|
|
assets.extend(mapper.map_asset_conditions_for_property(p, survey_year))
|
|
|
|
print("done") # temp
|