From 68198bfd4126a4396b97588e24784154206e2fee Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Wed, 1 Nov 2023 09:50:56 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(store.py):=20retrieve=20like?= =?UTF-8?q?s=20count=20after=20liking=20a=20component=20to=20update=20the?= =?UTF-8?q?=20response=20with=20the=20latest=20count=20=E2=9C=A8=20feat(sc?= =?UTF-8?q?hema.py):=20update=20UsersLikesResponse=20model=20to=20include?= =?UTF-8?q?=20likes=5Fcount=20and=20liked=5Fby=5Fuser=20fields=20=E2=9C=A8?= =?UTF-8?q?=20feat(service.py):=20add=20get=5Fcomponent=5Flikes=5Fcount=20?= =?UTF-8?q?method=20to=20retrieve=20the=20number=20of=20likes=20for=20a=20?= =?UTF-8?q?component?= 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 | 4 ++-- src/backend/langflow/services/store/service.py | 8 ++++++++ 3 files changed, 15 insertions(+), 3 deletions(-) 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