From a42ea8670aca43faed9b138c0a83f21dcfdc4fd9 Mon Sep 17 00:00:00 2001 From: Jun-te Kim Date: Wed, 9 Apr 2025 08:25:54 +0000 Subject: [PATCH] added types for better pydantic things --- etl/hubSpotClient/hubspot.py | 7 ++++++- etl/hubSpotClient/types.py | 15 +++++++++++++++ etl/hubspot_to_deemed_calculator.py | 9 +++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 etl/hubSpotClient/types.py diff --git a/etl/hubSpotClient/hubspot.py b/etl/hubSpotClient/hubspot.py index ae3dbd2..ff04f85 100644 --- a/etl/hubSpotClient/hubspot.py +++ b/etl/hubSpotClient/hubspot.py @@ -4,6 +4,7 @@ from hubspot.crm.deals import PublicObjectSearchRequest class DealStage(Enum): SURVEYED_COMPLETE_NEEDS_SIGN_OFF = "1617223914" + SURVEYED_NO_ACCESS_NEED_SIGN_OFF = "1617223915" class HubSpotClient(): def __init__(self): @@ -25,7 +26,11 @@ class HubSpotClient(): }], properties=["dealname"], ) - return self.client.crm.deals.search_api.do_search(search_request) + found_deals = self.client.crm.deals.search_api.do_search(search_request) + if hasattr(found_deals, "results"): + return found_deals.results + else: + return None def print_all_pipeline_ids(self): pipelines = self.client.crm.pipelines.pipelines_api.get_all(object_type="deals") diff --git a/etl/hubSpotClient/types.py b/etl/hubSpotClient/types.py new file mode 100644 index 0000000..8a2a8cb --- /dev/null +++ b/etl/hubSpotClient/types.py @@ -0,0 +1,15 @@ +from sqlmodel import Field, SQLModel +from sqlalchemy import Column +from sqlalchemy.dialects.postgresql import UUID +import uuid + +class BaseModel(SQLModel): + id: uuid.UUID = Field( + default_factory=uuid.uuid4, + sa_column=Column(UUID(as_uuid=True), primary_key=True) + ) + + +class Deal(BaseModel): + id: str + name: str \ No newline at end of file diff --git a/etl/hubspot_to_deemed_calculator.py b/etl/hubspot_to_deemed_calculator.py index fdbcdc5..09c8d61 100644 --- a/etl/hubspot_to_deemed_calculator.py +++ b/etl/hubspot_to_deemed_calculator.py @@ -1,4 +1,5 @@ from etl.hubSpotClient.hubspot import HubSpotClient, DealStage +from etl.hubSpotClient.types import Deal hubSpotClient = HubSpotClient() @@ -6,3 +7,11 @@ hubSpotClient = HubSpotClient() deals = hubSpotClient.get_deals_from_deal_stage(DealStage.SURVEYED_COMPLETE_NEEDS_SIGN_OFF) +all_deals = [] + +if deals: + for deal in deals: + all_deals.append(Deal( + id= deal.properties["hs_object_id"], + name=deal.properties["dealname"] + )) \ No newline at end of file