#!/usr/bin/env python
"""
Script de monitoring de la base de données
Usage: python monitor_db.py
"""

import os
import sys
import django
import time
from datetime import datetime

# Configuration Django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
django.setup()

from django.db import connection

def monitor_database(duration=300):  # 5 minutes par défaut
    """Surveiller la base de données pendant une durée donnée"""
    start_time = time.time()
    errors = 0
    successes = 0

    print(f"Monitoring de la base de données pendant {duration} secondes...")
    print("Ctrl+C pour arrêter\n")

    try:
        while time.time() - start_time < duration:
            try:
                with connection.cursor() as cursor:
                    cursor.execute("SELECT NOW(), CONNECTION_ID()")
                    result = cursor.fetchone()

                current_time = datetime.now().strftime("%H:%M:%S")
                print(f"[{current_time}] ✓ DB OK - ID:{result[1]} - {result[0]}")
                successes += 1

            except Exception as e:
                current_time = datetime.now().strftime("%H:%M:%S")
                print(f"[{current_time}] ✗ ERREUR: {e}")
                errors += 1

                # Tenter une reconnexion
                try:
                    connection.close()
                    print(f"[{current_time}] → Reconnexion...")
                except:
                    pass

            time.sleep(10)  # Vérifier toutes les 10 secondes

    except KeyboardInterrupt:
        print("\nMonitoring interrompu par l'utilisateur")

    print(f"\nRésultats: {successes} succès, {errors} erreurs")
    if errors > 0:
        print("⚠ Des erreurs ont été détectées, vérifiez la configuration MySQL")
    else:
        print("✓ Aucune erreur détectée")

if __name__ == "__main__":
    duration = int(sys.argv[1]) if len(sys.argv) > 1 else 300
    monitor_database(duration)
