from django.core.management.base import BaseCommand
from users.models import LoginOTP
from django.db.models import Max

class Command(BaseCommand):
    help = "Cleanup duplicate LoginOTP rows, keep only the latest per user"

    def handle(self, *args, **kwargs):
        latest_otps = LoginOTP.objects.values("user_id").annotate(max_id=Max("id"))
        keep_ids = [item["max_id"] for item in latest_otps]

        deleted, _ = LoginOTP.objects.exclude(id__in=keep_ids).delete()
        self.stdout.write(self.style.SUCCESS(f"Deleted {deleted} duplicate OTPs"))