Skip to content

Feature/hubsot handler updates#12058

Merged
ea-rus merged 8 commits into
releases/25.14.0from
feature/hubsot-handler-updates
Jan 13, 2026
Merged

Feature/hubsot handler updates#12058
ea-rus merged 8 commits into
releases/25.14.0from
feature/hubsot-handler-updates

Conversation

@tino097

@tino097 tino097 commented Jan 7, 2026

Copy link
Copy Markdown
Contributor

Description

HubSpot integration updates

(Please delete options that are not relevant)

  • 🐛 Bug fix (non-breaking change which fixes an issue)
  • ⚡ New feature (non-breaking change which adds functionality)
  • 📢 Breaking change (fix or feature that would cause existing functionality not to work as expected)
  • 📄 This change requires a documentation update

Verification Process

To ensure the changes are working as expected:

  • Test Location: Specify the URL or path for testing.
  • Verification Steps: Outline the steps or queries needed to validate the change. Include any data, configurations, or actions required to reproduce or see the new functionality.

Additional Media:

  • I have attached a brief loom video or screenshots showcasing the new functionality or change.

Checklist:

  • My code follows the style guidelines(PEP 8) of MindsDB.
  • I have appropriately commented on my code, especially in complex areas.
  • Necessary documentation updates are either made or tracked in issues.
  • Relevant unit and integration tests are updated or added.

@tino097 tino097 changed the base branch from main to releases/25.14.0 January 7, 2026 18:58
@tino097 tino097 mentioned this pull request Jan 7, 2026
11 tasks
@github-actions

github-actions Bot commented Jan 7, 2026

Copy link
Copy Markdown

Coverage

Coverage Report
FileStmtsMissCoverMissing
mindsdb/integrations/handlers/bigquery_handler
   __init__.py14379%7–9
   bigquery_handler.py1622982%55, 59, 64–67, 70, 90, 111–115, 121, 143–145, 161–163, 304, 307, 309, 343–344, 369–371, 374–375
mindsdb/integrations/handlers/file_handler
   file_handler.py1171785%25–27, 56, 59, 62, 88–89, 113, 131–132, 155–158, 166–167
mindsdb/integrations/handlers/mssql_handler
   __init__.py14379%10–12
   mssql_handler.py2844186%39–58, 79, 99, 106, 110, 121, 196, 244, 290–294, 306–308, 336, 363, 365–368, 402–407, 421, 444, 482, 524, 568, 600, 671, 710
mindsdb/integrations/handlers/mysql_handler
   __init__.py14379%10–12
   mysql_handler.py2011195%33–37, 79–84, 100, 164
   settings.py813754%30, 37–42, 49, 57, 71–81, 87–111, 117
mindsdb/integrations/handlers/oracle_handler
   __init__.py14379%10–12
   oracle_handler.py2674782%79–80, 113, 115, 117, 194, 205–206, 229–235, 239, 242–245, 253–255, 261–263, 295–297, 303, 361–378, 516–517, 622
mindsdb/integrations/handlers/postgres_handler
   __init__.py14379%8–10
   postgres_handler.py3262592%96–102, 196, 240, 278–279, 313–318, 345, 389–392, 455, 514, 545–546, 695
mindsdb/integrations/handlers/redshift_handler
   __init__.py14379%8–10
mindsdb/integrations/handlers/salesforce_handler
   __init__.py14379%10–12
   salesforce_handler.py122596%102–104, 146, 341
   salesforce_tables.py881286%140, 184–185, 231, 249–267
mindsdb/integrations/handlers/slack_handler
   __init__.py13377%10–12
   slack_handler.py1361192%57, 59, 122–124, 310, 314, 319, 323, 327, 342
   slack_tables.py2706576%58, 64–65, 71–72, 101–103, 156, 163–165, 251–265, 285, 293–295, 310, 340–344, 375–377, 384–387, 394, 404–408, 438–440, 447–450, 459–463, 549–551, 556, 577, 585–587, 599, 630–634, 698, 705–707
mindsdb/integrations/handlers/snowflake_handler
   __init__.py14379%8–10
   auth_types.py441273%12, 38, 44, 68–77
   snowflake_handler.py3244287%33–34, 111, 116, 118, 122, 157, 159–163, 210, 294, 328, 383–399, 432, 577–594, 620–623, 637, 658, 693
mindsdb/integrations/handlers/timescaledb_handler
   __init__.py13377%7–9
TOTAL274638486% 

Tests Skipped Failures Errors Time
561 65 💤 0 ❌ 0 🔥 19.181s ⏱️

return companies_df

def add(self, company_data: List[dict]):
self.create_companies(company_data)

def modify(self, conditions: List[FilterCondition], values: Dict) -> None:
companies_df = pd.json_normalize(self.get_companies(limit=1000))
normalized_conditions = _normalize_filter_conditions(conditions)
companies_df = pd.json_normalize(self.get_companies(limit=200, where_conditions=normalized_conditions))

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the matching row is beyond the first 200, we won’t update/delete i right?

@ZoranPandovski

Copy link
Copy Markdown
Member

@tino097 Atm every table class (Companies, Contacts, Deals etc.) re-implements the same logic: how to fetch data, when to use Search vs get_all, how to paginate, etc. The only real differences between tables are configuration so maybe we can improve this with using a BaseClass that will simplify the code

@ea-rus ea-rus merged commit ad68856 into releases/25.14.0 Jan 13, 2026
18 checks passed
@ea-rus ea-rus deleted the feature/hubsot-handler-updates branch January 13, 2026 10:29
@github-actions github-actions Bot locked and limited conversation to collaborators Jan 13, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants