From 0e4da14673086f8f4087cf4b5723ece981dd2903 Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Mon, 9 Feb 2026 09:56:41 +0000 Subject: [PATCH] get lookup file bucket and key from payload per message --- backend/condition/condition_trigger_request.py | 6 ++++-- backend/condition/handler/handler.py | 16 ++++++++-------- backend/condition/processor.py | 6 ++++-- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/backend/condition/condition_trigger_request.py b/backend/condition/condition_trigger_request.py index 1bea6a0d..130d9896 100644 --- a/backend/condition/condition_trigger_request.py +++ b/backend/condition/condition_trigger_request.py @@ -1,4 +1,5 @@ from enum import Enum +from typing import Optional from pydantic import BaseModel @@ -12,5 +13,6 @@ class ConditionTriggerRequest(BaseModel): file_type: ConditionFileType trigger_file_bucket: str # TODO: get this from settings trigger_file_key: str - uprn_lookup_file_bucket: str # TODO: get this from settings - uprn_lookup_file_key: str + + uprn_lookup_file_bucket: Optional[str] = None # TODO: get this from settings + uprn_lookup_file_key: Optional[str] = None diff --git a/backend/condition/handler/handler.py b/backend/condition/handler/handler.py index fabfc84c..bb3b68ed 100644 --- a/backend/condition/handler/handler.py +++ b/backend/condition/handler/handler.py @@ -1,11 +1,7 @@ import json from typing import Mapping, Any -import os - from io import BytesIO -from backend.app.config import get_settings - from backend.condition.condition_trigger_request import ConditionTriggerRequest from backend.condition.lookups.uprn_lookup_s3 import UprnLookupS3 from backend.condition.processor import process_file @@ -18,15 +14,19 @@ logger = setup_logger() def handler(event: Mapping[str, Any], context: Any) -> None: - uprn_lookup = UprnLookupS3( - bucket="", key="" - ) # TODO: replace with postgres implementation - for record in event.get("Records", []): try: body_dict = json.loads(record["body"]) payload = ConditionTriggerRequest.model_validate(body_dict) + if payload.uprn_lookup_file_bucket and payload.uprn_lookup_file_key: + uprn_lookup = UprnLookupS3( + bucket=payload.uprn_lookup_file_bucket, + key=payload.uprn_lookup_file_key, + ) # TODO: replace with postgres implementation + else: + uprn_lookup = None + file_bytes: BytesIO = read_io_from_s3( bucket_name=payload.trigger_file_bucket, file_key=payload.trigger_file_key, diff --git a/backend/condition/processor.py b/backend/condition/processor.py index 70ce2df9..8d281561 100644 --- a/backend/condition/processor.py +++ b/backend/condition/processor.py @@ -1,4 +1,4 @@ -from typing import Any, BinaryIO, List +from typing import Any, BinaryIO, List, Optional from datetime import datetime from backend.condition.condition_trigger_request import ConditionFileType @@ -14,7 +14,9 @@ logger = setup_logger() def process_file( - file_stream: BinaryIO, file_type: ConditionFileType, uprn_lookup: UprnLookup + file_stream: BinaryIO, + file_type: ConditionFileType, + uprn_lookup: Optional[UprnLookup], ) -> None: # Instantiation parser: Parser = select_parser(file_type, uprn_lookup)