from django.core.management.base import BaseCommand
from django.utils import timezone
from datetime import timedelta

from rest_framework_simplejwt.token_blacklist.models import (
    OutstandingToken,
    BlacklistedToken,
)


class DeleteToken(BaseCommand):
    
    def expired(self, *args,):
        interval = 10
        cutoff_date = timezone.now() - timedelta(days=interval)

        # Delete expired Outstanding Tokens
        expired_tokens = OutstandingToken.objects.filter(expires_at__lt=cutoff_date)
        expired_count = expired_tokens.count()
        expired_tokens.delete()

        # Delete Blacklisted Tokens whose OutstandingToken no longer exists
        blacklisted = BlacklistedToken.objects.filter(token__expires_at__lt=cutoff_date)
        blacklisted_count = blacklisted.count()
        blacklisted.delete()

        #  Log results
        self.stdout.write(self.style.SUCCESS(
            f"Cleanup complete! Removed {expired_count} expired tokens "
            f"and {blacklisted_count} old blacklisted tokens (older than {interval} days)."
        ))
    
    