from django.core.management.base import BaseCommand
from extractly.models import NetworkMonitoredPage


class Command(BaseCommand):
    help = "Usuwa raw_data ze wszystkich rekordów, które mają je wypełnione (niezależnie od is_raw_data)."

    def add_arguments(self, parser):
        parser.add_argument(
            '--limit',
            type=int,
            help='Maksymalna liczba rekordów do zresetowania.'
        )

    def handle(self, *args, **options):
        qs = NetworkMonitoredPage.objects.filter(raw_data__isnull=False).exclude(raw_data="")

        if options['limit']:
            qs = qs[:options['limit']]

        total = qs.count()
        self.stdout.write(f"Znaleziono {total} rekordów z wypełnionym raw_data. Rozpoczynam czyszczenie...")

        for i, page in enumerate(qs, 1):
            page.raw_data = None
            page.is_raw_data = False
            page.save(update_fields=['raw_data', 'is_raw_data'])
            self.stdout.write(f"[{i}/{total}] ✔️ ID={page.id} wyczyszczono")

        self.stdout.write(self.style.SUCCESS("Czyszczenie zakończone."))
