From ccd851cad08e777312f0ae7b245065b82301d893 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Thu, 16 Nov 2023 11:03:32 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(store.py):=20add=20filter=5F?= =?UTF-8?q?by=5Fuser=20parameter=20to=20get=5Fcomponents=20function=20to?= =?UTF-8?q?=20enable=20filtering=20components=20by=20user=20=F0=9F=90=9B?= =?UTF-8?q?=20fix(service.py):=20add=20filter=5Fby=5Fuser=20parameter=20to?= =?UTF-8?q?=20StoreService's=20get=5Fcomponents=20method=20to=20enable=20f?= =?UTF-8?q?iltering=20components=20by=20user=20=F0=9F=90=9B=20fix(index.ts?= =?UTF-8?q?):=20add=20filterByUser=20parameter=20to=20getStoreComponents?= =?UTF-8?q?=20function=20to=20enable=20filtering=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 | 10 +++++++++- src/frontend/src/controllers/API/index.ts | 7 ++++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/backend/langflow/api/v1/store.py b/src/backend/langflow/api/v1/store.py index 609e76b74..0513dadee 100644 --- a/src/backend/langflow/api/v1/store.py +++ b/src/backend/langflow/api/v1/store.py @@ -4,6 +4,7 @@ from uuid import UUID from fastapi import APIRouter, Depends, HTTPException, Query from httpx import HTTPStatusError + from langflow.services.auth import utils as auth_utils from langflow.services.database.models.user.user import User from langflow.services.deps import get_settings_service, get_store_service @@ -102,6 +103,7 @@ async def get_components( tags: Annotated[Optional[list[str]], Query()] = None, sort: Annotated[Union[list[str], None], Query()] = None, liked: Annotated[bool, Query()] = False, + filter_by_user: Annotated[bool, Query()] = False, page: int = 1, limit: int = 10, store_service: StoreService = Depends(get_store_service), @@ -116,6 +118,7 @@ async def get_components( is_component=is_component, liked=liked, api_key=store_api_Key, + filter_by_user=filter_by_user, ) result: List[ListComponentResponse] = [] authorized = False diff --git a/src/backend/langflow/services/store/service.py b/src/backend/langflow/services/store/service.py index 691c56df5..44e628389 100644 --- a/src/backend/langflow/services/store/service.py +++ b/src/backend/langflow/services/store/service.py @@ -4,6 +4,8 @@ from uuid import UUID import httpx from httpx import HTTPError, HTTPStatusError +from loguru import logger + from langflow.services.base import Service from langflow.services.store.schema import ( CreateComponentResponse, @@ -12,7 +14,6 @@ from langflow.services.store.schema import ( StoreComponentCreate, ) from langflow.services.store.utils import process_tags_for_post -from loguru import logger if TYPE_CHECKING: from langflow.services.settings.service import SettingsService @@ -140,6 +141,7 @@ class StoreService(Service): is_component: Optional[bool] = None, liked: bool = False, api_key: Optional[str] = None, + filter_by_user: Optional[bool] = False, ): filter_conditions = [] @@ -157,6 +159,12 @@ class StoreService(Service): if is_component is not None: filter_conditions.append({"is_component": {"_eq": is_component}}) + if filter_by_user: + user_data = user_data_var.get() + if not user_data: + raise ValueError("No user data") + filter_conditions.append({"user_created": {"_eq": user_data["id"]}}) + liked_filter = self.build_liked_filter(liked, api_key) filter_conditions.append(liked_filter) diff --git a/src/frontend/src/controllers/API/index.ts b/src/frontend/src/controllers/API/index.ts index 2e47fe522..34b1b1ce4 100644 --- a/src/frontend/src/controllers/API/index.ts +++ b/src/frontend/src/controllers/API/index.ts @@ -598,7 +598,8 @@ export async function getStoreComponents( tags?: string[] | null, liked?: boolean | null, status?: string | null, - search?: string | null + search?: string | null, + filterByUser?: string | null ): Promise { try { let url = `${BASE_URL_API}store/components/`; @@ -623,6 +624,10 @@ export async function getStoreComponents( queryParams.push(`liked=${liked}`); } + if (filterByUser !== undefined && filterByUser !== null) { + queryParams.push(`filter_by_user=${filterByUser}`); + } + if (page !== undefined) { queryParams.push(`page=${page ?? 1}`); }