from django.core.management.base import BaseCommand
from extractly.models import RawMonitoredLink
from collections import defaultdict

class Command(BaseCommand):
    help = "Usuwa duplikaty w RawMonitoredLink – zostawia tylko po jednym wpisie dla każdego url"

    def handle(self, *args, **kwargs):
        print("Wyszukiwanie duplikatów...")
        # Grupa po URL, zbieraj id rekordów
        url_to_ids = defaultdict(list)
        for link in RawMonitoredLink.objects.values("id", "url"):
            url_to_ids[link["url"]].append(link["id"])
        
        do_usuniecia = []
        for url, ids in url_to_ids.items():
            # Zostaw jeden, resztę zapisz do usunięcia
            if len(ids) > 1:
                do_usuniecia.extend(ids[1:])

        if not do_usuniecia:
            print("Brak duplikatów do usunięcia – każdy link jest unikalny.")
            return

        ile = len(do_usuniecia)
        print(f"Znaleziono {ile} powtórzonych wpisów – usuwam...")
        RawMonitoredLink.objects.filter(id__in=do_usuniecia).delete()
        print(f"Usunięto {ile} powtórzonych linków. Gotowe.")

