From 3432a07285ca71cab3594350e8e55bf1e5585ba1 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Mon, 20 Nov 2023 19:49:11 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(store.py):=20rename=20create?= =?UTF-8?q?=5Fcomponent=20function=20to=20share=5Fcomponent=20for=20better?= =?UTF-8?q?=20semantics=20=E2=9C=A8=20feat(store.py):=20add=20support=20fo?= =?UTF-8?q?r=20private=20query=20parameter=20in=20get=5Fcomponents=20funct?= =?UTF-8?q?ion=20to=20filter=20components=20by=20privacy=20=F0=9F=90=9B=20?= =?UTF-8?q?fix(schema.py):=20set=20default=20value=20of=20private=20field?= =?UTF-8?q?=20in=20StoreComponentCreate=20schema=20to=20True=20?= =?UTF-8?q?=F0=9F=90=9B=20fix(service.py):=20change=20status=20field=20to?= =?UTF-8?q?=20private=20field=20in=20build=5Ffilter=5Fconditions=20and=20g?= =?UTF-8?q?et=5Flist=5Fcomponent=5Fresponse=5Fmodel=20functions=20to=20fil?= =?UTF-8?q?ter=20components=20by=20privacy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/langflow/api/v1/store.py | 6 ++-- src/backend/langflow/services/store/schema.py | 2 +- .../langflow/services/store/service.py | 35 +++++++++---------- 3 files changed, 20 insertions(+), 23 deletions(-) diff --git a/src/backend/langflow/api/v1/store.py b/src/backend/langflow/api/v1/store.py index bdcc05245..61446808d 100644 --- a/src/backend/langflow/api/v1/store.py +++ b/src/backend/langflow/api/v1/store.py @@ -69,7 +69,7 @@ async def check_if_store_has_api_key( @router.post("/components/", response_model=CreateComponentResponse, status_code=201) -async def create_component( +async def share_component( component: StoreComponentCreate, store_service: StoreService = Depends(get_store_service), store_api_Key: str = Depends(get_user_store_api_key), @@ -105,7 +105,7 @@ async def create_component( @router.get("/components/", response_model=ListComponentResponseModel) async def get_components( search: Annotated[Optional[str], Query()] = None, - status: Annotated[Optional[str], Query()] = None, + private: Annotated[Optional[bool], Query()] = None, is_component: Annotated[Optional[bool], Query()] = None, tags: Annotated[Optional[list[str]], Query()] = None, sort: Annotated[Union[list[str], None], Query()] = None, @@ -119,7 +119,7 @@ async def get_components( try: return await store_service.get_list_component_response_model( search=search, - status=status, + private=private, is_component=is_component, tags=tags, sort=sort, diff --git a/src/backend/langflow/services/store/schema.py b/src/backend/langflow/services/store/schema.py index 89eb7a094..0f99c0cb3 100644 --- a/src/backend/langflow/services/store/schema.py +++ b/src/backend/langflow/services/store/schema.py @@ -71,4 +71,4 @@ class StoreComponentCreate(BaseModel): parent: Optional[UUID] = None is_component: Optional[bool] last_tested_version: Optional[str] = None - public: Optional[bool] = False + private: Optional[bool] = True diff --git a/src/backend/langflow/services/store/service.py b/src/backend/langflow/services/store/service.py index f6ad10c03..2cd97dcd6 100644 --- a/src/backend/langflow/services/store/service.py +++ b/src/backend/langflow/services/store/service.py @@ -5,19 +5,16 @@ from uuid import UUID import httpx from httpx import HTTPError, HTTPStatusError from langflow.services.base import Service -from langflow.services.store.exceptions import APIKeyError, FilterError, ForbiddenError -from langflow.services.store.schema import ( - CreateComponentResponse, - DownloadComponentResponse, - ListComponentResponse, - ListComponentResponseModel, - StoreComponentCreate, -) -from langflow.services.store.utils import ( - process_component_data, - process_tags_for_post, - update_components_with_user_data, -) +from langflow.services.store.exceptions import (APIKeyError, FilterError, + ForbiddenError) +from langflow.services.store.schema import (CreateComponentResponse, + DownloadComponentResponse, + ListComponentResponse, + ListComponentResponseModel, + StoreComponentCreate) +from langflow.services.store.utils import (process_component_data, + process_tags_for_post, + update_components_with_user_data) from loguru import logger if TYPE_CHECKING: @@ -170,7 +167,7 @@ class StoreService(Service): def build_filter_conditions( self, search: Optional[str] = None, - status: Optional[str] = None, + private: Optional[bool] = None, tags: Optional[List[str]] = None, is_component: Optional[bool] = None, filter_by_user: Optional[bool] = False, @@ -183,8 +180,8 @@ class StoreService(Service): search_conditions = self.build_search_filter_conditions(search) filter_conditions.append(search_conditions) - if status is not None: - filter_conditions.append({"status": {"_eq": status}}) + if private is not None: + filter_conditions.append({"private": {"_eq": private}}) if tags: tags_filter = self.build_tags_filter(tags) @@ -206,7 +203,7 @@ class StoreService(Service): elif filter_by_user and not store_api_Key: raise APIKeyError("You must provide an API key to filter your components") else: - filter_conditions.append({"status": {"_in": ["public", "Public"]}}) + filter_conditions.append({"private": {"_eq": False}}) return filter_conditions @@ -411,7 +408,7 @@ class StoreService(Service): async def get_list_component_response_model( self, search: Optional[str] = None, - status: Optional[str] = None, + private: Optional[bool] = None, tags: Optional[List[str]] = None, is_component: Optional[bool] = None, filter_by_user: bool = False, @@ -424,7 +421,7 @@ class StoreService(Service): async with user_data_context(api_key=store_api_Key, store_service=self): filter_conditions: List[Dict[str, Any]] = self.build_filter_conditions( search=search, - status=status, + private=private, tags=tags, is_component=is_component, filter_by_user=filter_by_user,