from django.apps import AppConfig
from decouple import config
import logging
import sys

logger = logging.getLogger("database")

class CoreConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'core'

    def ready(self):
        # Only run diagnostics if explicitly enabled
        if config("ENABLE_STARTUP_DIAGNOSTICS", default=False, cast=bool):
            # Avoid running during migrate/collectstatic/makemigrations
            if len(sys.argv) > 1 and sys.argv[1] in ['migrate', 'makemigrations', 'collectstatic', 'test']:
                return

            try:
                from core.database import (
                    get_database_metadata,
                    check_database_health
                )
                
                metadata = get_database_metadata()
                health = check_database_health()
                
                logger.info("=== Database Startup Diagnostics ===")
                logger.info(f"Engine     : {metadata.get('engine')}")
                logger.info(f"Version    : {metadata.get('version')}")
                logger.info(f"Driver     : {metadata.get('driver')}")
                
                if health.get('connected'):
                    logger.info(f"Status     : CONNECTED")
                    logger.info(f"Latency    : {health.get('latency_ms')} ms")
                else:
                    logger.error(f"Status     : DISCONNECTED ({health.get('error')})")
            except Exception as e:
                logger.error(f"Failed to run startup diagnostics: {e}")
