From 6615bf3b0309db68ec8334d3ff7e74dbcf3068c0 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Thu, 26 Oct 2023 11:46:42 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20fix(store.py):=20import=20UsersL?= =?UTF-8?q?ikesResponse=20in=20store.py=20to=20resolve=20import=20error=20?= =?UTF-8?q?=E2=9C=A8=20feat(store.py):=20add=20new=20endpoint=20to=20get?= =?UTF-8?q?=20list=20of=20components=20liked=20by=20a=20user=20?= =?UTF-8?q?=F0=9F=94=A7=20fix(schema.py):=20add=20UsersLikesResponse=20sch?= =?UTF-8?q?ema=20to=20define=20the=20response=20structure=20for=20the=20ne?= =?UTF-8?q?w=20endpoint=20=F0=9F=94=A7=20fix(service.py):=20add=20get=5Fus?= =?UTF-8?q?er=5Flikes=20method=20to=20retrieve=20the=20list=20of=20compone?= =?UTF-8?q?nts=20liked=20by=20a=20user=20from=20the=20store=20API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/langflow/api/v1/store.py | 12 ++++++++++-- src/backend/langflow/services/store/schema.py | 5 +++++ src/backend/langflow/services/store/service.py | 8 ++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/backend/langflow/api/v1/store.py b/src/backend/langflow/api/v1/store.py index 141e38c38..dd97a9e33 100644 --- a/src/backend/langflow/api/v1/store.py +++ b/src/backend/langflow/api/v1/store.py @@ -12,6 +12,7 @@ from langflow.services.store.schema import ( ListComponentResponse, StoreComponentCreate, TagResponse, + UsersLikesResponse, ) from fastapi import APIRouter, Depends, HTTPException, Query @@ -173,5 +174,12 @@ def get_tags( raise HTTPException(status_code=500, detail=str(exc)) -# urlencodedstr = https://api.langflow.store/items/components?page=0&limit=10000&fields=id%2Cname%2Cdescription%2Cuser_created.name%2Cis_component%2Ctags.tags_id.name%2Ctags.tags_id.id%2Ccount%28liked_by%29&filter=%7B%22status%22%3A%20%7B%22_in%22%3A%20%5B%22public%22%2C%20%22Public%22%5D%7D%7D' -# normalstr = https://api.langflow.store/items/components?page=0&limit=10000&fields=id,name,description,user_created.name,is_component,tags.tags_id.name,tags.tags_id.id,count(liked_by)&filter={"status": {"_in": ["public", "Public"]}}' +@router.get("/users/likes", response_model=List[UsersLikesResponse]) +def get_list_of_components_liked_by_user( + store_service: StoreService = Depends(get_store_service), + store_api_Key: str = Depends(get_user_store_api_key), +): + try: + return store_service.get_user_likes(store_api_Key) + 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 259d341b2..339f55c9e 100644 --- a/src/backend/langflow/services/store/schema.py +++ b/src/backend/langflow/services/store/schema.py @@ -9,6 +9,11 @@ class TagResponse(BaseModel): name: Optional[str] +class UsersLikesResponse(BaseModel): + id: UUID + likes: Optional[List[UUID]] + + class ComponentResponse(BaseModel): id: UUID status: Optional[str] diff --git a/src/backend/langflow/services/store/service.py b/src/backend/langflow/services/store/service.py index 8b0f5c53f..28c47f3b3 100644 --- a/src/backend/langflow/services/store/service.py +++ b/src/backend/langflow/services/store/service.py @@ -221,3 +221,11 @@ class StoreService(Service): params = {"fields": ",".join(["id", "name"])} tags = self._get(url, api_key, params) return tags + + def get_user_likes(self, api_key: str) -> List[Dict[str, Any]]: + url = f"{self.base_url}/users/me" + params = { + "fields": ",".join(["id", "likes"]), + } + likes = self._get(url, api_key, params) + return likes