🐛 fix(store.py): retrieve likes count after liking a component to update the response with the latest count

 feat(schema.py): update UsersLikesResponse model to include likes_count and liked_by_user fields
 feat(service.py): add get_component_likes_count method to retrieve the number of likes for a component
This commit is contained in:
Gabriel Luiz Freitas Almeida 2023-11-01 09:50:56 -03:00
commit 68198bfd41
3 changed files with 15 additions and 3 deletions

View file

@ -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))

View file

@ -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):

View file

@ -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