"""Viewsets for transaction APIs."""

from __future__ import annotations

from rest_framework import filters, permissions, viewsets

from .models import Transaction
from .serializers import TransactionSerializer


class TransactionViewSet(viewsets.ReadOnlyModelViewSet):
    """Authenticated access to the current user's transaction history."""

    queryset = Transaction.objects.none()
    serializer_class = TransactionSerializer
    permission_classes = [permissions.IsAuthenticated]
    filter_backends = [filters.OrderingFilter]
    ordering = ["-created_at"]

    def get_queryset(self):
        queryset = (
            Transaction.objects.filter(user=self.request.user)
            .order_by("-created_at")
        )

        tx_type = self.request.query_params.get("type")
        if tx_type:
            queryset = queryset.filter(transaction_type=tx_type)

        return queryset
