from enum import Enum from typing import Optional from backend.app.db.models.uploaded_file import FileTypeEnum class CoreFiles(Enum): PHOTOPACK = "Photopack" SITENOTE = "SiteNote" RDSAP_SITENOTE = "RdSAP_SiteNote" PAS2023_VENTILATION = "PAS 2023 Ventilation Assessment Report" PAS2023_CONDITION = "PAS 2023 Condition Report" PAS_SIGNIFICANCE = "PAS Significance" PAR_PHOTOPACK = "PAR Photo Pack" PAS2023_PROPERTY = "PAS 2023 Property Assessment Report" PAS2023_OCCUPANCY = "PAS 2023 Occupancy Assessment Report" CORE_TO_FILETYPE_MAP = { CoreFiles.PHOTOPACK: FileTypeEnum.PHOTO_PACK.value, CoreFiles.SITENOTE: FileTypeEnum.SITE_NOTE.value, CoreFiles.RDSAP_SITENOTE: FileTypeEnum.RD_SAP_SITE_NOTE.value, CoreFiles.PAS2023_VENTILATION: FileTypeEnum.PAS_2023_VENTILATION.value, CoreFiles.PAS2023_CONDITION: FileTypeEnum.PAS_2023_CONDITION.value, CoreFiles.PAS_SIGNIFICANCE: FileTypeEnum.PAS_SIGNIFICANCE.value, CoreFiles.PAR_PHOTOPACK: FileTypeEnum.PAR_PHOTO_PACK.value, CoreFiles.PAS2023_PROPERTY: FileTypeEnum.PAS_2023_PROPERTY.value, CoreFiles.PAS2023_OCCUPANCY: FileTypeEnum.PAS_2023_OCCUPANCY.value, } def infer_file_type(filename: str) -> Optional[str]: for core_file, file_type in CORE_TO_FILETYPE_MAP.items(): if filename.startswith(core_file.value): return file_type return None