feat: ADRF async views (phase1) + native async serializers (phase2) + async cache infra
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
from rest_framework import status
|
||||
from rest_framework.views import APIView
|
||||
from adrf.views import APIView
|
||||
from rest_framework.permissions import IsAuthenticated
|
||||
from django.utils import timezone
|
||||
from django.utils.decorators import method_decorator
|
||||
@@ -36,7 +36,7 @@ class LoginRecordListAPIView(APIView):
|
||||
],
|
||||
responses={200: success_response, 401: unauthorized_response},
|
||||
)
|
||||
def get(self, request):
|
||||
async def get(self, request):
|
||||
user = request.user
|
||||
page = int(request.query_params.get('page', 1))
|
||||
page_size = int(request.query_params.get('page_size', 10))
|
||||
@@ -67,11 +67,12 @@ class LoginRecordListAPIView(APIView):
|
||||
elif start_date and end_date:
|
||||
records = records.filter(login_time__date__gte=start_date, login_time__date__lte=end_date)
|
||||
|
||||
total = records.count()
|
||||
total = await records.acount()
|
||||
start = (page - 1) * page_size
|
||||
end = start + page_size
|
||||
|
||||
serializer = LoginRecordSerializer(records[start:end], many=True)
|
||||
items = [item async for item in records[start:end]]
|
||||
serializer = LoginRecordSerializer(items, many=True)
|
||||
|
||||
return create_standardized_response(
|
||||
data={
|
||||
@@ -99,11 +100,11 @@ class LoginRecordDeleteAPIView(APIView):
|
||||
],
|
||||
responses={200: success_response, 401: unauthorized_response, 404: not_found_response},
|
||||
)
|
||||
def delete(self, request, pk):
|
||||
async def delete(self, request, pk):
|
||||
user = request.user
|
||||
try:
|
||||
record = LoginRecord.objects.get(pk=pk, user=user)
|
||||
record.delete()
|
||||
record = await LoginRecord.objects.aget(pk=pk, user=user)
|
||||
await record.adelete()
|
||||
return create_standardized_response(
|
||||
code=ResponseCode.SUCCESS,
|
||||
status_code=status.HTTP_200_OK
|
||||
@@ -126,9 +127,9 @@ class LoginRecordClearAPIView(APIView):
|
||||
operation_description='清空当前用户的所有登录记录',
|
||||
responses={200: success_response, 401: unauthorized_response},
|
||||
)
|
||||
def delete(self, request):
|
||||
async def delete(self, request):
|
||||
user = request.user
|
||||
deleted_count, _ = LoginRecord.objects.filter(user=user).delete()
|
||||
deleted_count, _ = await LoginRecord.objects.filter(user=user).adelete()
|
||||
return create_standardized_response(
|
||||
data={'deleted_count': deleted_count},
|
||||
code=ResponseCode.SUCCESS,
|
||||
|
||||
Reference in New Issue
Block a user