fix cache

This commit is contained in:
2026-03-30 09:39:35 -06:00
parent 24ff67ec0c
commit c31145f76e
4 changed files with 40 additions and 12 deletions

View File

@@ -19,12 +19,19 @@ from contest.models import ContestRuleType
class ProblemTagAPI(APIView):
def get(self, request):
keyword = request.GET.get("keyword", "")
cache_key = f"{CacheKey.problem_tags}:{keyword}"
cached = cache.get(cache_key)
if cached is not None:
return self.success(cached)
qs = ProblemTag.objects
keyword = request.GET.get("keyword")
if keyword:
qs = ProblemTag.objects.filter(name__icontains=keyword)
tags = qs.annotate(problem_count=Count("problem")).filter(problem_count__gt=0)
return self.success(TagSerializer(tags, many=True).data)
data = TagSerializer(tags, many=True).data
cache.set(cache_key, data, 3600)
return self.success(data)
class PickOneAPI(APIView):