diff --git a/src/backend/langflow/api/v1/store.py b/src/backend/langflow/api/v1/store.py index ba5ab1565..f89c22e3f 100644 --- a/src/backend/langflow/api/v1/store.py +++ b/src/backend/langflow/api/v1/store.py @@ -198,6 +198,10 @@ def like_component( store_api_Key: str = Depends(get_user_store_api_key), ): try: - return store_service.like_component(store_api_Key, component_id) + result = store_service.like_component(store_api_Key, component_id) + likes_count = store_service.get_component_likes_count( + store_api_Key, component_id + ) + return {"likes": likes_count, "liked_by_user": result} except Exception as exc: raise HTTPException(status_code=500, detail=str(exc)) diff --git a/src/backend/langflow/services/store/schema.py b/src/backend/langflow/services/store/schema.py index 71722dded..ab49d20f0 100644 --- a/src/backend/langflow/services/store/schema.py +++ b/src/backend/langflow/services/store/schema.py @@ -10,8 +10,8 @@ class TagResponse(BaseModel): class UsersLikesResponse(BaseModel): - id: UUID - likes: Optional[List[UUID]] + likes_count: Optional[int] + liked_by_user: Optional[bool] class ComponentResponse(BaseModel): diff --git a/src/backend/langflow/services/store/service.py b/src/backend/langflow/services/store/service.py index 5c4a25bc7..23c0d9656 100644 --- a/src/backend/langflow/services/store/service.py +++ b/src/backend/langflow/services/store/service.py @@ -309,6 +309,14 @@ class StoreService(Service): likes = self._get(url, api_key, params) return likes + def get_component_likes_count(self, api_key: str, component_id: str) -> int: + url = f"{self.components_url}/{component_id}" + params = { + "fields": ",".join(["id", "count(liked_by)"]), + } + likes = self._get(url, api_key, params) + return likes + def like_component(self, api_key: str, component_id: str) -> bool: # if it returns a list with one id, it means the like was successful # if it returns an int, it means the like was removed