🐛 fix(store.py): add filter_by_user parameter to get_components function to enable filtering components by user

🐛 fix(service.py): add filter_by_user parameter to StoreService's get_components method to enable filtering components by user
🐛 fix(index.ts): add filterByUser parameter to getStoreComponents function to enable filtering components by user
This commit is contained in:
Gabriel Luiz Freitas Almeida 2023-11-16 11:03:32 -03:00
commit ccd851cad0
3 changed files with 18 additions and 2 deletions

View file

@ -4,6 +4,7 @@ from uuid import UUID
from fastapi import APIRouter, Depends, HTTPException, Query from fastapi import APIRouter, Depends, HTTPException, Query
from httpx import HTTPStatusError from httpx import HTTPStatusError
from langflow.services.auth import utils as auth_utils from langflow.services.auth import utils as auth_utils
from langflow.services.database.models.user.user import User from langflow.services.database.models.user.user import User
from langflow.services.deps import get_settings_service, get_store_service 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, tags: Annotated[Optional[list[str]], Query()] = None,
sort: Annotated[Union[list[str], None], Query()] = None, sort: Annotated[Union[list[str], None], Query()] = None,
liked: Annotated[bool, Query()] = False, liked: Annotated[bool, Query()] = False,
filter_by_user: Annotated[bool, Query()] = False,
page: int = 1, page: int = 1,
limit: int = 10, limit: int = 10,
store_service: StoreService = Depends(get_store_service), store_service: StoreService = Depends(get_store_service),
@ -116,6 +118,7 @@ async def get_components(
is_component=is_component, is_component=is_component,
liked=liked, liked=liked,
api_key=store_api_Key, api_key=store_api_Key,
filter_by_user=filter_by_user,
) )
result: List[ListComponentResponse] = [] result: List[ListComponentResponse] = []
authorized = False authorized = False

View file

@ -4,6 +4,8 @@ from uuid import UUID
import httpx import httpx
from httpx import HTTPError, HTTPStatusError from httpx import HTTPError, HTTPStatusError
from loguru import logger
from langflow.services.base import Service from langflow.services.base import Service
from langflow.services.store.schema import ( from langflow.services.store.schema import (
CreateComponentResponse, CreateComponentResponse,
@ -12,7 +14,6 @@ from langflow.services.store.schema import (
StoreComponentCreate, StoreComponentCreate,
) )
from langflow.services.store.utils import process_tags_for_post from langflow.services.store.utils import process_tags_for_post
from loguru import logger
if TYPE_CHECKING: if TYPE_CHECKING:
from langflow.services.settings.service import SettingsService from langflow.services.settings.service import SettingsService
@ -140,6 +141,7 @@ class StoreService(Service):
is_component: Optional[bool] = None, is_component: Optional[bool] = None,
liked: bool = False, liked: bool = False,
api_key: Optional[str] = None, api_key: Optional[str] = None,
filter_by_user: Optional[bool] = False,
): ):
filter_conditions = [] filter_conditions = []
@ -157,6 +159,12 @@ class StoreService(Service):
if is_component is not None: if is_component is not None:
filter_conditions.append({"is_component": {"_eq": is_component}}) 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) liked_filter = self.build_liked_filter(liked, api_key)
filter_conditions.append(liked_filter) filter_conditions.append(liked_filter)

View file

@ -598,7 +598,8 @@ export async function getStoreComponents(
tags?: string[] | null, tags?: string[] | null,
liked?: boolean | null, liked?: boolean | null,
status?: string | null, status?: string | null,
search?: string | null search?: string | null,
filterByUser?: string | null
): Promise<StoreComponentResponse | undefined> { ): Promise<StoreComponentResponse | undefined> {
try { try {
let url = `${BASE_URL_API}store/components/`; let url = `${BASE_URL_API}store/components/`;
@ -623,6 +624,10 @@ export async function getStoreComponents(
queryParams.push(`liked=${liked}`); queryParams.push(`liked=${liked}`);
} }
if (filterByUser !== undefined && filterByUser !== null) {
queryParams.push(`filter_by_user=${filterByUser}`);
}
if (page !== undefined) { if (page !== undefined) {
queryParams.push(`page=${page ?? 1}`); queryParams.push(`page=${page ?? 1}`);
} }