import json
from django.core.management.base import BaseCommand
from extractly.models import SourceNetwork
from django.core.serializers.json import DjangoJSONEncoder

class Command(BaseCommand):
    help = "Eksportuje wszystkie źródła NetworkSource do pliku JSON (domyślnie network_sources.json)"

    def add_arguments(self, parser):
        parser.add_argument(
            '--output', '-o',
            default='network_sources.json',
            help='Ścieżka do pliku wynikowego'
        )

    def handle(self, *args, **options):
        output_path = options['output']
        sources = SourceNetwork.objects.all()

        # Jeśli masz relacje i chcesz eksportować tylko wybrane pola (bez relacji do innych modeli):
        data = []
        for s in sources:
            data.append({
                'id': str(s.id),
                'title': s.title,
                'name': s.name,
                'base_url': s.base_url,
                'structure': s.structure,
                'params': s.params,
                'pagination': s.pagination,
                'selectors': s.selectors,
                'is_ai': s.is_ai,
                'enabled': s.enabled,
                'last_checked': s.last_checked.isoformat() if s.last_checked else None,
                'last_status': s.last_status,
                'created_at': s.created_at.isoformat() if s.created_at else None,
            })

        with open(output_path, 'w', encoding='utf-8') as f:
            json.dump(data, f, indent=2, ensure_ascii=False, cls=DjangoJSONEncoder)

        self.stdout.write(self.style.SUCCESS(
            f"Wyeksportowano {len(data)} NetworkSource do pliku {output_path}"))
