🐛 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:
parent
2c3199ad0b
commit
68198bfd41
3 changed files with 15 additions and 3 deletions
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue