"""
Django management команда для анализа медленных SQL запросов.
Использование: python manage.py analyze_slow_queries [--limit=10]
"""
import time
from django.core.management.base import BaseCommand
from django.db import connection, reset_queries
from django.test.utils import override_settings


class Command(BaseCommand):
    help = 'Анализирует медленные SQL запросы в приложении'
    
    def add_arguments(self, parser):
        parser.add_argument(
            '--limit',
            type=int,
            default=10,
            help='Количество самых медленных запросов для показа (по умолчанию: 10)',
        )
        parser.add_argument(
            '--min-time',
            type=float,
            default=0.01,
            help='Минимальное время запроса в секундах для отображения (по умолчанию: 0.01)',
        )
    
    def handle(self, *args, **options):
        limit = options['limit']
        min_time = options['min_time']
        
        self.stdout.write(self.style.SUCCESS('=' * 70))
        self.stdout.write(self.style.SUCCESS('🔍 Анализ медленных SQL запросов'))
        self.stdout.write(self.style.SUCCESS('=' * 70))
        self.stdout.write('')
        self.stdout.write(f'Минимальное время для отображения: {min_time}с')
        self.stdout.write(f'Лимит запросов: {limit}')
        self.stdout.write('')
        
        # Включаем логирование запросов
        with override_settings(DEBUG=True):
            from django.db import connection
            
            # Включаем отслеживание запросов
            connection.queries_log.clear()
            
            self.stdout.write('📝 Включено логирование SQL запросов.')
            self.stdout.write('   Выполните тесты или запросы к API, затем проверьте результаты.')
            self.stdout.write('')
            self.stdout.write('💡 Для использования:')
            self.stdout.write('   1. Запустите сервер: python manage.py runserver')
            self.stdout.write('   2. Выполните запросы к API через браузер или curl')
            self.stdout.write('   3. Проверьте логи Django или используйте django-debug-toolbar')
            self.stdout.write('')
            self.stdout.write('📊 Альтернативные способы анализа:')
            self.stdout.write('   - Django Debug Toolbar: откройте страницу в браузере')
            self.stdout.write('   - Django Silk: откройте http://localhost:8000/silk/')
            self.stdout.write('   - Pytest с логированием: pytest --log-sql')


