#!/usr/bin/env python
"""Test Django database connection"""

import os
import sys
from pathlib import Path

print("=" * 60)
print("Testing Django Database Connection")
print("=" * 60)
print()

# Step 1: Load .env FIRST
print("[1/3] Loading .env file...")
from dotenv import load_dotenv
BASE_DIR = Path(__file__).resolve().parent
env_path = BASE_DIR / '.env'

if not env_path.exists():
    print("ERROR: .env not found")
    sys.exit(1)

load_dotenv(env_path, override=True)
print(f"  DB_NAME: {os.getenv('DB_NAME')}")
print(f"  DB_USER: {os.getenv('DB_USER')}")
print(f"  DB_HOST: {os.getenv('DB_HOST')}")
print()

# Step 2: Setup Django
print("[2/3] Setting up Django...")
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'branch_system.settings')

import django
django.setup()
print("  Django setup complete")
print()

# Step 3: Check Django's database configuration
print("[3/3] Checking Django database settings...")
from django.conf import settings

db_config = settings.DATABASES['default']
print(f"  Engine: {db_config['ENGINE']}")
print(f"  Name: {db_config['NAME']}")
print(f"  User: {db_config['USER']}")
print(f"  Host: {db_config['HOST']}")
print(f"  Port: {db_config['PORT']}")
print(f"  Password: {'***set***' if db_config['PASSWORD'] else '❌ NOT SET'}")
print()

# Step 4: Try to connect
print("[4/3] Testing database connection...")
try:
    from django.db import connection
    with connection.cursor() as cursor:
        cursor.execute("SELECT DATABASE()")
        db_name = cursor.fetchone()[0]
        print(f"  ✓ Connected successfully!")
        print(f"  ✓ Current database: {db_name}")
        print()
        
        # Count existing accounts
        cursor.execute("SELECT COUNT(*) FROM accounting_accounts")
        count = cursor.fetchone()[0]
        print(f"  ✓ Accounting accounts table exists")
        print(f"  ✓ Current account count: {count}")
        
except Exception as e:
    print(f"  ✗ Connection failed: {e}")
    print()
    print("  Diagnosis:")
    print(f"  - Django is trying to connect as: {db_config['USER']}")
    print(f"  - To database: {db_config['NAME']}")
    print(f"  - But got error about 'root' user")
    print()
    print("  This means Django settings.py is NOT using the .env values!")
    sys.exit(1)

print()
print("=" * 60)
print("SUCCESS - Database connection works!")
print("=" * 60)
