from rest_framework import status
from rest_framework.decorators import api_view, permission_classes
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework.pagination import PageNumberPagination
from likes.models import LikePost, LikeComment
from .serializers import LikePostSerializer, LikeCommentSerializer


@api_view(['GET'])
@permission_classes([IsAuthenticated])
def list_post_likes(request, post_id):
    likes = LikePost.objects.filter(post_id=post_id)

    # Pagination
    paginator = PageNumberPagination()
    paginator.page_size = 20
    result_page = paginator.paginate_queryset(likes, request)

    serializer = LikePostSerializer(result_page, many=True)
    return paginator.get_paginated_response(serializer.data)


@api_view(['GET'])
@permission_classes([IsAuthenticated])
def list_comment_likes(request, comment_id):
    likes = LikeComment.objects.filter(comment_id=comment_id)

    # Pagination
    paginator = PageNumberPagination()
    paginator.page_size = 20
    result_page = paginator.paginate_queryset(likes, request)

    serializer = LikeCommentSerializer(result_page, many=True)
    return paginator.get_paginated_response(serializer.data)