From 0c0545b7ae220bc7cc9f016ebd489b266783ea5d Mon Sep 17 00:00:00 2001 From: Antoine Dewez <44063631+Zewed@users.noreply.github.com> Date: Mon, 25 Mar 2024 16:13:51 -0700 Subject: [PATCH] fix(backend): invitation brain bugs (#2380) # Description Please include a summary of the changes and the related issue. Please also include relevant motivation and context. ## Checklist before requesting a review Please delete options that are not relevant. - [ ] My code follows the style guidelines of this project - [ ] I have performed a self-review of my code - [ ] I have commented hard-to-understand areas - [ ] I have ideally added tests that prove my fix is effective or that my feature works - [ ] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged ## Screenshots (if appropriate): --- .../brain/integrations/Notion/Notion_connector.py | 4 ++-- .../brain/integrations/SQL/SQL_connector.py | 2 +- .../modules/brain/repository/integration_brains.py | 12 ++++++++---- .../repository/interfaces/brains_interface.py | 2 +- .../interfaces/integration_brains_interface.py | 2 +- backend/modules/brain/service/brain_service.py | 14 +++++++++++--- 6 files changed, 24 insertions(+), 12 deletions(-) diff --git a/backend/modules/brain/integrations/Notion/Notion_connector.py b/backend/modules/brain/integrations/Notion/Notion_connector.py index 243687980..72d3d5341 100644 --- a/backend/modules/brain/integrations/Notion/Notion_connector.py +++ b/backend/modules/brain/integrations/Notion/Notion_connector.py @@ -59,7 +59,7 @@ class NotionConnector(IntegrationBrain, Integration): def _load_credentials(self) -> dict[str, str]: """Load the Notion credentials""" self.integration_details = self.get_integration_brain( - self.brain_id, self.user_id + self.brain_id ) if self.credentials is None: logger.info("Loading Notion credentials") @@ -343,7 +343,7 @@ class NotionConnector(IntegrationBrain, Integration): """ Update all the brains with the latest data from Notion """ - integration = self.get_integration_brain(self.brain_id, self.user_id) + integration = self.get_integration_brain(self.brain_id) last_synced = integration.last_synced query_dict = { diff --git a/backend/modules/brain/integrations/SQL/SQL_connector.py b/backend/modules/brain/integrations/SQL/SQL_connector.py index 4cbc858b0..ed7264bd7 100644 --- a/backend/modules/brain/integrations/SQL/SQL_connector.py +++ b/backend/modules/brain/integrations/SQL/SQL_connector.py @@ -26,7 +26,7 @@ class SQLConnector(IntegrationBrain): def _load_credentials(self) -> dict[str, str]: """Load the Notion credentials""" self.integration_details = self.get_integration_brain( - self.brain_id, self.user_id + self.brain_id ) if self.credentials is None: logger.info("Loading Notion credentials") diff --git a/backend/modules/brain/repository/integration_brains.py b/backend/modules/brain/repository/integration_brains.py index c13d119f6..d4f638f20 100644 --- a/backend/modules/brain/repository/integration_brains.py +++ b/backend/modules/brain/repository/integration_brains.py @@ -33,14 +33,18 @@ class IntegrationBrain(IntegrationBrainInterface): def __init__(self): self.db = get_supabase_client() - def get_integration_brain(self, brain_id, user_id): - response = ( + def get_integration_brain(self, brain_id, user_id = None): + query = ( self.db.table("integrations_user") .select("*") .filter("brain_id", "eq", brain_id) - .filter("user_id", "eq", user_id) - .execute() ) + + if user_id: + query.filter("user_id", "eq", user_id) + + response = query.execute() + if len(response.data) == 0: return None diff --git a/backend/modules/brain/repository/interfaces/brains_interface.py b/backend/modules/brain/repository/interfaces/brains_interface.py index 9abbf5aec..823686945 100644 --- a/backend/modules/brain/repository/interfaces/brains_interface.py +++ b/backend/modules/brain/repository/interfaces/brains_interface.py @@ -21,7 +21,7 @@ class BrainsInterface(ABC): pass @abstractmethod - def get_brain_details(self, brain_id: UUID) -> BrainEntity | None: + def get_brain_details(self, brain_id: UUID, user_id: UUID) -> BrainEntity | None: """ Get all public brains """ diff --git a/backend/modules/brain/repository/interfaces/integration_brains_interface.py b/backend/modules/brain/repository/interfaces/integration_brains_interface.py index 0d8d7140e..346400a83 100644 --- a/backend/modules/brain/repository/interfaces/integration_brains_interface.py +++ b/backend/modules/brain/repository/interfaces/integration_brains_interface.py @@ -9,7 +9,7 @@ from modules.brain.entity.integration_brain import ( class IntegrationBrainInterface(ABC): @abstractmethod - def get_integration_brain(self, brain_id: UUID, user_id: UUID) -> IntegrationEntity: + def get_integration_brain(self, brain_id: UUID) -> IntegrationEntity: """Get the integration brain entity Args: diff --git a/backend/modules/brain/service/brain_service.py b/backend/modules/brain/service/brain_service.py index 2f5dfbf86..f30dd3079 100644 --- a/backend/modules/brain/service/brain_service.py +++ b/backend/modules/brain/service/brain_service.py @@ -58,9 +58,9 @@ class BrainService: def get_brain_by_id(self, brain_id: UUID): return self.brain_repository.get_brain_by_id(brain_id) - def get_integration_brain(self, brain_id, user_id) -> IntegrationEntity | None: + def get_integration_brain(self, brain_id) -> IntegrationEntity | None: return self.integration_brains_repository.get_integration_brain( - brain_id, user_id + brain_id ) def find_brain_from_question( @@ -323,7 +323,7 @@ class BrainService: def update_brain_last_update_time(self, brain_id: UUID): self.brain_repository.update_brain_last_update_time(brain_id) - def get_brain_details(self, brain_id: UUID, user_id: UUID) -> BrainEntity | None: + def get_brain_details(self, brain_id: UUID, user_id: UUID = None) -> BrainEntity | None: brain = self.brain_repository.get_brain_details(brain_id) if brain == None: return None @@ -334,6 +334,14 @@ class BrainService: brain_id, user_id ) ) + + if (brain.integration): + brain.integration_description = ( + self.integration_description_repository.get_integration_description( + brain.integration.integration_id + ) + ) + return brain def get_connected_brains(self, brain_id: UUID) -> list[BrainEntity]: