From 03595d8473c4e70002964e766998d17019c69272 Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Tue, 14 Apr 2026 10:04:45 +0000 Subject: [PATCH 1/2] Trigger pashub lambda when neal deal inserted, if pashub_link is set --- etl/hubspot/scripts/scraper/main.py | 48 ++++++++++++++++++----------- 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/etl/hubspot/scripts/scraper/main.py b/etl/hubspot/scripts/scraper/main.py index d754cbb1..e6c788ea 100644 --- a/etl/hubspot/scripts/scraper/main.py +++ b/etl/hubspot/scripts/scraper/main.py @@ -22,7 +22,6 @@ def handler(body: dict[str, Any], context: Any) -> None: hubspot_client = HubspotClient() sqs_client = boto3.client("sqs") - PASHUB_TRIGGER_QUEUE_URL = get_settings().PASHUB_TO_ARA_SQS_URL payload = HubspotTriggerOrchestratorTriggerRequest.model_validate(body) hubspot_deal_id: str = payload.hubspot_deal_id @@ -41,7 +40,6 @@ def handler(body: dict[str, Any], context: Any) -> None: deal_changed = False if not db_deal: - # New hubspot deal, no diffing to do logger.info(f"New HubSpot deal of ID {hubspot_deal_id}. Loading to database...") if company: company_data: CompanyData = hubspot_client.get_company_information(company) @@ -49,6 +47,15 @@ def handler(body: dict[str, Any], context: Any) -> None: db_client.upsert_organisation(company_data) db_client.upsert_deal(hubspot_deal, company, listing, hubspot_client) + + # ============================== + # Orchestration of other lambdas + # ============================== + if hubspot_deal["pashub_link"]: + logger.info( + f"Triggering Pas Hub file fetcher for HubSpot deal ID {hubspot_deal_id}" + ) + _trigger_pashub_fetcher(sqs_client, hubspot_deal) else: # Deal already in db, check whether anything has changed logger.info( @@ -84,22 +91,7 @@ def handler(body: dict[str, Any], context: Any) -> None: logger.info( f"Triggering Pas Hub file fetcher for HubSpot deal ID {hubspot_deal_id}" ) - message_body: Dict[str, Optional[str]] = { - "pashub_link": hubspot_deal["pashub_link"], - "address": None, # potentially available from Listing, leave as None for now - "sharepoint_link": hubspot_deal["sharepoint_link"], - "uprn": hubspot_deal["national_uprn"], - "landlord_property_id": hubspot_deal["owner_property_id"], - "deal_stage": hubspot_deal["deal_stage"], - } - - response = sqs_client.send_message( - QueueUrl=PASHUB_TRIGGER_QUEUE_URL, MessageBody=json.dumps(message_body) - ) - - logger.info( - f"Sent message to Pashub To Ara queue. MessageId: {response['MessageId']}" - ) + _trigger_pashub_fetcher(sqs_client, hubspot_deal) else: logger.info( f"Not Triggering PasHub file fetcher for HubSpot deal ID {hubspot_deal_id}" @@ -108,6 +100,26 @@ def handler(body: dict[str, Any], context: Any) -> None: print("done") +def _trigger_pashub_fetcher(sqs_client: Any, hubspot_deal: Dict[str, str]) -> None: + message_body: Dict[str, Optional[str]] = { + "pashub_link": hubspot_deal["pashub_link"], + "address": None, # potentially available from Listing, leave as None for now + "sharepoint_link": hubspot_deal["sharepoint_link"], + "uprn": hubspot_deal["national_uprn"], + "landlord_property_id": hubspot_deal["owner_property_id"], + "deal_stage": hubspot_deal["deal_stage"], + } + + response = sqs_client.send_message( + QueueUrl=get_settings().PASHUB_TO_ARA_SQS_URL, + MessageBody=json.dumps(message_body), + ) + + logger.info( + f"Sent message to Pashub To Ara queue. MessageId: {response['MessageId']}" + ) + + if __name__ == "__main__": handler({"hubspot_deal_id": "371470706915"}, "") print("beep") From 52406385a49b74d962407ebd6962d034fda73666 Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Tue, 14 Apr 2026 10:05:54 +0000 Subject: [PATCH 2/2] add task handling to pashub file fetcher --- backend/pashub_fetcher/handler/handler.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/backend/pashub_fetcher/handler/handler.py b/backend/pashub_fetcher/handler/handler.py index 793b9d70..3689efe9 100644 --- a/backend/pashub_fetcher/handler/handler.py +++ b/backend/pashub_fetcher/handler/handler.py @@ -20,6 +20,7 @@ from backend.pashub_fetcher.pashub_to_ara_trigger_request import ( ) from backend.pashub_fetcher.sharepoint_subfolders import SharepointSubfolders from backend.pashub_fetcher.token_getter import get_token_from_local_storage +from backend.utils.subtasks import task_handler from utils.logger import setup_logger from utils.s3 import upload_file_to_s3 from utils.sharepoint.domna_sharepoint_client import DomnaSharepointClient @@ -165,6 +166,7 @@ def process_job( return job_files +@task_handler() def handler(event: Mapping[str, Any], context: Any) -> None: logger.info("Received message") logger.info(f"Number of events: {len(event.get('Records', []))}")