#!/bin/bash
# scripts/check-db-connection.sh - Быстрая проверка подключения к БД

set -e

echo "🔗 Проверка подключения к базе данных..."

# Проверка из контейнера web
echo "📡 Тест 1: Django ORM подключение..."
if docker-compose exec -T web python -c "
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend.settings')
django.setup()
from django.db import connection
from django.contrib.auth import get_user_model

try:
    # Тест подключения
    with connection.cursor() as cursor:
        cursor.execute('SELECT 1')
        print('✅ База данных отвечает')
    
    # Тест ORM
    User = get_user_model()
    user_count = User.objects.count()
    print(f'✅ Пользователей в системе: {user_count}')
    
    # Тест миграций
    from django.core.management import call_command
    from io import StringIO
    out = StringIO()
    call_command('showmigrations', '--plan', stdout=out)
    migrations_output = out.getvalue()
    if '[X]' in migrations_output:
        print('✅ Миграции применены')
    else:
        print('⚠️ Есть неприменённые миграции')
        
except Exception as e:
    print(f'❌ Ошибка Django: {e}')
    exit(1)
" 2>/dev/null; then
    echo "✅ Django успешно подключается к БД"
else
    echo "❌ Ошибка подключения Django к БД"
    exit 1
fi

# Прямая проверка PostgreSQL
echo ""
echo "📡 Тест 2: Прямое подключение к PostgreSQL..."
if docker-compose exec -T db pg_isready -U links_user -d links_db; then
    echo "✅ PostgreSQL готов к подключениям"
else
    echo "❌ PostgreSQL не готов"
    exit 1
fi

# Проверка таблиц
echo ""
echo "📡 Тест 3: Проверка структуры БД..."
if docker-compose exec -T db psql -U links_user -d links_db -c "
SELECT 
    schemaname,
    tablename 
FROM pg_tables 
WHERE schemaname = 'public' 
ORDER BY tablename;
" 2>/dev/null; then
    echo "✅ Таблицы базы данных доступны"
else
    echo "❌ Не удается получить список таблиц"
    exit 1
fi

echo ""
echo "✅ Все проверки подключения к БД пройдены успешно!"