Add functions for querying and caching starred item counts for a user.
Review Request #12025 — Created Feb. 2, 2022 and submitted — Latest diff uploaded
This introduces new functions to
Profile
for querying starred review
request and group information in a way that leverages a cache. The
following functions have been added:
get_starred_review_groups_count()
get_starred_review_requests_count()
has_starred_review_groups()
has_starred_review_requests()
is_review_group_starred()
is_review_request_starred()
Both get_starred_review_groups_count()
and
get_starred_review_requests_count()
return the number of starred
groups/review requests for a given user and optional LocalSite
. These
values are cached, making subsequent lookups fast, and enabling
decisions to be made based on the content.
These are wrapped by has_starred_review_groups()
and
has_starred_review_requests()
, which fetch the count and return whether
there's at least 1 item.
is_review_group_starred()
and is_review_request_starred()
return
whether a given review group or review request are starred. This queries
the database as normal, but if the user hasn't starred any items of the
given type, this won't perform a query at all.
The star/unstar methods will invalidate the cache count.
Most users don't star items, and likely don't star them very often. By
caching, we can avoid a lot of lookups and simplify database queries for
users (which will be implemented in another change).
Unit tests pass.