from django.core.management.base import BaseCommand, CommandError

from games.utils import import_gamelist_file_to_db_for_system


class Command(BaseCommand):
    help = "Import all games found in a given gamelist XML file"

    def add_arguments(self, parser):
        parser.add_argument("system", type=str)
        parser.add_argument(
            "--file",
            action="store_true",
            help="Import from specific file",
        )
        parser.add_argument(
            "--full-scan",
            action="store_true",
            help="Update all files, even ones we already know about",
        )

    def handle(self, *args, **options):
        results = import_gamelist_file_to_db_for_system(
            options["system"],
            options["file"],
            options["full_scan"],
        )
        imported = results["imported"]
        not_imported = results["not_imported"]
        if imported:
            self.stdout.write(
                self.style.SUCCESS(f"Successfully imported {len(imported)} games")
            )
        if not_imported and not imported:
            self.stdout.write(
                self.style.SUCCESS(f"Found, but did not update {len(not_imported)} games (use --full-scan to update)")
            )
        else:
            self.stdout.write(
                self.style.ERROR(
                    "No games imported, check for gamelist.xml file or re-run scraper"
                )
            )
