🐛 fix(store.py): remove unnecessary code that checks for liked and store_api_Key variables

🐛 fix(service.py): remove unnecessary import statement for logger
✨ feat(store.py): add support for filtering components by liked status and store API key
✨ feat(service.py): add build_liked_filter method to build filter conditions based on liked status and store API key
This commit is contained in:
Gabriel Luiz Freitas Almeida 2023-11-16 11:26:59 -03:00
commit c91d89380a
2 changed files with 12 additions and 10 deletions

View file

@ -4,7 +4,6 @@ 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
@ -118,11 +117,6 @@ async def get_components(
is_component=is_component, is_component=is_component,
filter_by_user=filter_by_user, filter_by_user=filter_by_user,
) )
if liked and store_api_Key:
liked_filter = store_service.build_liked_filter(liked, store_api_Key)
filter_conditions.append(liked_filter)
elif liked and not store_api_Key:
raise ValueError("You must provide an API key to filter by likes")
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
@ -141,6 +142,8 @@ class StoreService(Service):
tags: Optional[List[str]] = None, tags: Optional[List[str]] = None,
is_component: Optional[bool] = None, is_component: Optional[bool] = None,
filter_by_user: Optional[bool] = False, filter_by_user: Optional[bool] = False,
liked: Optional[bool] = False,
store_api_Key: Optional[str] = None,
): ):
filter_conditions = [] filter_conditions = []
@ -157,13 +160,18 @@ 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 liked and store_api_Key:
if filter_by_user: liked_filter = self.build_liked_filter(liked, store_api_Key)
filter_conditions.append(liked_filter)
elif liked and not store_api_Key:
raise ValueError("You must provide an API key to filter by likes")
if filter_by_user and store_api_Key:
user_data = user_data_var.get() user_data = user_data_var.get()
if not user_data: if not user_data:
raise ValueError("No user data") raise ValueError("No user data")
filter_conditions.append({"user_created": {"_eq": user_data["id"]}}) filter_conditions.append({"user_created": {"_eq": user_data["id"]}})
elif filter_by_user and not store_api_Key:
raise ValueError("You must provide an API key to filter your components")
return filter_conditions return filter_conditions
def build_liked_filter(self, liked: bool, api_key: Optional[str] = None): def build_liked_filter(self, liked: bool, api_key: Optional[str] = None):