From dde22bd35ffec1d5c10bd2f20ac76afc6accc456 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Tue, 24 Oct 2023 18:51:30 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20fix(store.py):=20add=20filter=5F?= =?UTF-8?q?by=5Fuser=20query=20parameter=20to=20read=5Fcomponent=20endpoin?= =?UTF-8?q?t=20to=20allow=20filtering=20components=20by=20user=20?= =?UTF-8?q?=F0=9F=94=A7=20fix(service.py):=20modify=20download=20method=20?= =?UTF-8?q?in=20StoreService=20to=20include=20filter=5Fby=5Fuser=20paramet?= =?UTF-8?q?er=20in=20API=20request=20to=20filter=20components=20by=20user?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/langflow/api/v1/store.py | 3 ++- src/backend/langflow/services/store/service.py | 13 ++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/backend/langflow/api/v1/store.py b/src/backend/langflow/api/v1/store.py index 3aec1fa7b..2a2c1118f 100644 --- a/src/backend/langflow/api/v1/store.py +++ b/src/backend/langflow/api/v1/store.py @@ -73,6 +73,7 @@ def list_components( @router.get("/components/{component_id}", response_model=DownloadComponentResponse) def read_component( component_id: UUID, + filter_by_user: bool = Query(False), store_service: StoreService = Depends(get_store_service), store_api_Key: str = Depends(get_user_store_api_key), settings_service=Depends(get_settings_service), @@ -81,7 +82,7 @@ def read_component( try: decrypted = auth_utils.decrypt_api_key(store_api_Key, settings_service) - component = store_service.download(decrypted, component_id) + component = store_service.download(decrypted, component_id, filter_by_user) except Exception as exc: raise HTTPException(status_code=400, detail=str(exc)) from exc diff --git a/src/backend/langflow/services/store/service.py b/src/backend/langflow/services/store/service.py index d16a6702f..e827ad632 100644 --- a/src/backend/langflow/services/store/service.py +++ b/src/backend/langflow/services/store/service.py @@ -1,4 +1,5 @@ from datetime import datetime +import json from uuid import UUID from langflow.services.base import Service from typing import TYPE_CHECKING, List, Dict, Any, Optional @@ -124,11 +125,21 @@ class StoreService(Service): results = self._get(self.components_url, api_key, params) return [ListComponentResponse(**component) for component in results] - def download(self, api_key: str, component_id: str) -> DownloadComponentResponse: + def download( + self, api_key: str, component_id: str, filter_by_user: bool + ) -> DownloadComponentResponse: url = f"{self.components_url}/{component_id}" params = { "fields": ",".join(["id", "name", "description", "data", "is_component"]) } + if filter_by_user: + params["deep"] = json.dumps( + { + "components": { + "_filter": {"user_created": {"token": {"_eq": api_key}}} + } + } + ) component = self._get(url, api_key, params) self.call_webhook(api_key, self.webhook_url, component_id)