from typing import Any, BinaryIO, List from backend.condition.domain.asset_condition import AssetCondition 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) assets: List[AssetCondition] = [] for p in raw_properties: assets.extend(mapper.map_asset_conditions_for_property(p)) print(assets) # temp