#!/bin/bash set -e echo "🔧 Conditional AzerothCore Database Import" echo "========================================" # Restoration status markers RESTORE_STATUS_DIR="/var/lib/mysql-persistent" RESTORE_SUCCESS_MARKER="$RESTORE_STATUS_DIR/.restore-completed" RESTORE_FAILED_MARKER="$RESTORE_STATUS_DIR/.restore-failed" echo "🔍 Checking restoration status..." # Check if backup was successfully restored if [ -f "$RESTORE_SUCCESS_MARKER" ]; then echo "✅ Backup restoration completed successfully" echo "📄 Restoration details:" cat "$RESTORE_SUCCESS_MARKER" echo "" echo "đŸšĢ Skipping database import - data already restored from backup" echo "💡 This prevents overwriting restored data with fresh schema" exit 0 fi # Check if restoration failed (fresh databases created) if [ -f "$RESTORE_FAILED_MARKER" ]; then echo "â„šī¸ No backup was restored - fresh databases detected" echo "📄 Database creation details:" cat "$RESTORE_FAILED_MARKER" echo "" echo "â–ļī¸ Proceeding with database import to populate fresh databases" else echo "âš ī¸ No restoration status found - assuming fresh installation" echo "â–ļī¸ Proceeding with database import" fi echo "" echo "🔧 Starting database import process..." # Wait for databases to be ready echo "âŗ Waiting for databases to be accessible..." for i in $(seq 1 120); do if mysql -h ${CONTAINER_MYSQL} -u${MYSQL_USER} -p${MYSQL_ROOT_PASSWORD} -e "USE ${DB_AUTH_NAME}; USE ${DB_WORLD_NAME}; USE ${DB_CHARACTERS_NAME};" >/dev/null 2>&1; then echo "✅ All databases accessible" break fi echo "âŗ Waiting for databases... attempt $i/120" sleep 5 done # Verify databases are actually empty before importing echo "🔍 Verifying databases are empty before import..." check_table_count() { local db_name="$1" local count=$(mysql -h ${CONTAINER_MYSQL} -u${MYSQL_USER} -p${MYSQL_ROOT_PASSWORD} -e " SELECT COUNT(*) FROM information_schema.tables WHERE table_schema='$db_name' AND table_type='BASE TABLE';" -s -N 2>/dev/null || echo "0") echo "$count" } auth_tables=$(check_table_count "${DB_AUTH_NAME}") world_tables=$(check_table_count "${DB_WORLD_NAME}") char_tables=$(check_table_count "${DB_CHARACTERS_NAME}") echo "📊 Current table counts:" echo " ${DB_AUTH_NAME}: $auth_tables tables" echo " ${DB_WORLD_NAME}: $world_tables tables" echo " ${DB_CHARACTERS_NAME}: $char_tables tables" # Warn if databases appear to have data if [ "$auth_tables" -gt 5 ] || [ "$world_tables" -gt 50 ] || [ "$char_tables" -gt 5 ]; then echo "âš ī¸ WARNING: Databases appear to contain data!" echo "âš ī¸ Import may overwrite existing data. Consider backing up first." echo "âš ī¸ Continuing in 10 seconds... (Ctrl+C to cancel)" sleep 10 fi echo "📝 Creating dbimport configuration..." mkdir -p /azerothcore/env/dist/etc cat > /azerothcore/env/dist/etc/dbimport.conf < "$RESTORE_STATUS_DIR/.import-completed" # Verify import was successful echo "🔍 Verifying import results..." auth_tables_after=$(check_table_count "${DB_AUTH_NAME}") world_tables_after=$(check_table_count "${DB_WORLD_NAME}") char_tables_after=$(check_table_count "${DB_CHARACTERS_NAME}") echo "📊 Post-import table counts:" echo " ${DB_AUTH_NAME}: $auth_tables_after tables" echo " ${DB_WORLD_NAME}: $world_tables_after tables" echo " ${DB_CHARACTERS_NAME}: $char_tables_after tables" if [ "$auth_tables_after" -gt 0 ] && [ "$world_tables_after" -gt 0 ]; then echo "✅ Import verification successful - databases populated" else echo "âš ī¸ Import verification failed - databases may be empty" fi else echo "❌ Database import failed!" echo "$(date): Database import failed" > "$RESTORE_STATUS_DIR/.import-failed" exit 1 fi echo "🎉 Database import process complete!"