257 lines
8.9 KiB
Bash
Executable File
257 lines
8.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
echo "🗃️ Import Database from sibedas.sql"
|
|
echo "===================================="
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
print_status() {
|
|
echo -e "${BLUE}[INFO]${NC} $1"
|
|
}
|
|
|
|
print_success() {
|
|
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
|
}
|
|
|
|
print_warning() {
|
|
echo -e "${YELLOW}[WARNING]${NC} $1"
|
|
}
|
|
|
|
print_error() {
|
|
echo -e "${RED}[ERROR]${NC} $1"
|
|
}
|
|
|
|
# Check if sibedas.sql exists
|
|
check_sql_file() {
|
|
if [[ ! -f "../sibedas.sql" ]]; then
|
|
print_error "sibedas.sql file not found!"
|
|
print_error "Please make sure sibedas.sql is in the project root directory."
|
|
exit 1
|
|
fi
|
|
|
|
print_success "Found sibedas.sql file"
|
|
}
|
|
|
|
# Import for local development
|
|
import_local() {
|
|
print_status "Importing database for LOCAL DEVELOPMENT..."
|
|
|
|
# Stop containers if running
|
|
print_status "Stopping containers..."
|
|
docker-compose -f ../docker-compose.local.yml down
|
|
|
|
# Remove existing database volume to force fresh import
|
|
print_warning "Removing old database volume for fresh import..."
|
|
docker volume rm sibedas-pbg-web_sibedas_dbdata_local 2>/dev/null || true
|
|
|
|
# Start database container first
|
|
print_status "Starting database container..."
|
|
docker-compose -f ../docker-compose.local.yml up -d db
|
|
|
|
# Wait for database to be ready
|
|
print_status "Waiting for database to be ready..."
|
|
sleep 20
|
|
|
|
# Verify sibedas.sql was imported automatically
|
|
print_status "Verifying database import..."
|
|
if docker-compose -f ../docker-compose.local.yml exec -T db mysql -uroot -proot -e "USE sibedas; SELECT COUNT(*) FROM users;" 2>/dev/null; then
|
|
print_success "✅ Database imported successfully from sibedas.sql!"
|
|
|
|
# Show table summary
|
|
print_status "Database tables summary:"
|
|
docker-compose -f ../docker-compose.local.yml exec -T db mysql -uroot -proot -e "
|
|
USE sibedas;
|
|
SELECT 'users' as table_name, COUNT(*) as count FROM users
|
|
UNION SELECT 'advertisements', COUNT(*) FROM advertisements
|
|
UNION SELECT 'business_or_industries', COUNT(*) FROM business_or_industries
|
|
UNION SELECT 'customers', COUNT(*) FROM customers
|
|
UNION SELECT 'cache', COUNT(*) FROM cache
|
|
UNION SELECT 'sessions', COUNT(*) FROM sessions
|
|
UNION SELECT 'jobs', COUNT(*) FROM jobs;"
|
|
|
|
else
|
|
print_error "❌ Database import failed or data not found!"
|
|
exit 1
|
|
fi
|
|
|
|
# Start all containers
|
|
print_status "Starting all containers..."
|
|
docker-compose -f ../docker-compose.local.yml up -d
|
|
|
|
# Wait for app to be ready
|
|
sleep 15
|
|
|
|
# Clear caches to ensure fresh start
|
|
print_status "Clearing application caches..."
|
|
docker-compose -f ../docker-compose.local.yml exec -T app php artisan config:clear
|
|
docker-compose -f ../docker-compose.local.yml exec -T app php artisan cache:clear
|
|
docker-compose -f ../docker-compose.local.yml exec -T app php artisan view:clear
|
|
|
|
print_success "✅ Local development setup completed with sibedas.sql data!"
|
|
print_status "Access your application at: http://localhost:8000"
|
|
}
|
|
|
|
# Import for production
|
|
import_production() {
|
|
print_status "Importing database for PRODUCTION..."
|
|
|
|
# Check if .env exists
|
|
if [[ ! -f "../.env" ]]; then
|
|
print_error ".env file not found! Please configure production environment first."
|
|
exit 1
|
|
fi
|
|
|
|
# Load environment variables
|
|
source ../.env
|
|
|
|
# Stop containers if running
|
|
print_status "Stopping containers..."
|
|
docker-compose -f ../docker-compose.yml down
|
|
|
|
# Remove existing database volume to force fresh import
|
|
print_warning "Removing old database volume for fresh import..."
|
|
docker volume rm sibedas-pbg-web_sibedas_dbdata 2>/dev/null || true
|
|
|
|
# Start database container first
|
|
print_status "Starting database container..."
|
|
docker-compose -f ../docker-compose.yml up -d db
|
|
|
|
# Wait for database to be ready
|
|
print_status "Waiting for database to be ready..."
|
|
sleep 30
|
|
|
|
# Verify sibedas.sql was imported automatically
|
|
print_status "Verifying database import..."
|
|
if docker-compose -f ../docker-compose.yml exec -T db mysql -uroot -p${MYSQL_ROOT_PASSWORD} -e "USE ${DB_DATABASE}; SELECT COUNT(*) FROM users;" 2>/dev/null; then
|
|
print_success "✅ Database imported successfully from sibedas.sql!"
|
|
|
|
# Show table summary
|
|
print_status "Database tables summary:"
|
|
docker-compose -f ../docker-compose.yml exec -T db mysql -uroot -p${MYSQL_ROOT_PASSWORD} -e "
|
|
USE ${DB_DATABASE};
|
|
SELECT 'users' as table_name, COUNT(*) as count FROM users
|
|
UNION SELECT 'advertisements', COUNT(*) FROM advertisements
|
|
UNION SELECT 'business_or_industries', COUNT(*) FROM business_or_industries
|
|
UNION SELECT 'customers', COUNT(*) FROM customers
|
|
UNION SELECT 'cache', COUNT(*) FROM cache
|
|
UNION SELECT 'sessions', COUNT(*) FROM sessions
|
|
UNION SELECT 'jobs', COUNT(*) FROM jobs;"
|
|
|
|
else
|
|
print_error "❌ Database import failed or data not found!"
|
|
exit 1
|
|
fi
|
|
|
|
# Start all containers
|
|
print_status "Starting all containers..."
|
|
docker-compose -f ../docker-compose.yml up -d
|
|
|
|
# Wait for app to be ready
|
|
sleep 30
|
|
|
|
# Generate app key if needed
|
|
if [[ -z "$APP_KEY" ]] || [[ "$APP_KEY" == "" ]]; then
|
|
print_status "Generating application key..."
|
|
docker-compose -f ../docker-compose.yml exec -T app php artisan key:generate --force
|
|
fi
|
|
|
|
# Optimize application
|
|
print_status "Optimizing application..."
|
|
docker-compose -f ../docker-compose.yml exec -T app php artisan config:cache
|
|
docker-compose -f ../docker-compose.yml exec -T app php artisan route:cache
|
|
docker-compose -f ../docker-compose.yml exec -T app php artisan view:cache
|
|
|
|
# Create storage link
|
|
print_status "Creating storage link..."
|
|
docker-compose -f ../docker-compose.yml exec -T app php artisan storage:link
|
|
|
|
print_success "✅ Production setup completed with sibedas.sql data!"
|
|
print_status "Access your application at: ${APP_URL}"
|
|
}
|
|
|
|
# Manual import to running container
|
|
manual_import() {
|
|
print_status "Manual import to running container..."
|
|
|
|
# Check which containers are running
|
|
if docker-compose -f ../docker-compose.local.yml ps | grep -q "sibedas_db_local"; then
|
|
print_status "Found local development database container"
|
|
print_status "Importing sibedas.sql..."
|
|
docker-compose -f ../docker-compose.local.yml exec -T db mysql -uroot -proot sibedas < ../sibedas.sql
|
|
print_success "✅ Import completed for local development!"
|
|
|
|
# Clear app caches
|
|
docker-compose -f ../docker-compose.local.yml exec -T app php artisan cache:clear 2>/dev/null || true
|
|
|
|
elif docker-compose -f ../docker-compose.yml ps | grep -q "sibedas_db"; then
|
|
print_status "Found production database container"
|
|
source ../.env 2>/dev/null || true
|
|
print_status "Importing sibedas.sql..."
|
|
docker-compose -f ../docker-compose.yml exec -T db mysql -uroot -p${MYSQL_ROOT_PASSWORD:-root} ${DB_DATABASE:-sibedas} < ../sibedas.sql
|
|
print_success "✅ Import completed for production!"
|
|
|
|
# Clear app caches
|
|
docker-compose -f ../docker-compose.yml exec -T app php artisan cache:clear 2>/dev/null || true
|
|
|
|
else
|
|
print_error "❌ No database container found running!"
|
|
print_error "Please start containers first:"
|
|
print_error " Local: docker-compose -f ../docker-compose.local.yml up -d"
|
|
print_error " Production: docker-compose -f ../docker-compose.yml up -d"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# Main execution
|
|
main() {
|
|
check_sql_file
|
|
|
|
echo ""
|
|
echo "🗃️ Choose import method:"
|
|
echo "1) 🔄 Fresh import for LOCAL development (recommended)"
|
|
echo "2) 🔄 Fresh import for PRODUCTION"
|
|
echo "3) 📥 Manual import to running container"
|
|
echo "4) ❌ Cancel"
|
|
echo ""
|
|
|
|
read -p "Enter your choice (1-4): " choice
|
|
|
|
case $choice in
|
|
1)
|
|
import_local
|
|
;;
|
|
2)
|
|
import_production
|
|
;;
|
|
3)
|
|
manual_import
|
|
;;
|
|
4)
|
|
print_status "Cancelled"
|
|
exit 0
|
|
;;
|
|
*)
|
|
print_error "Invalid choice"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
echo ""
|
|
print_success "🎉 Database import completed!"
|
|
echo ""
|
|
print_status "📋 Imported data includes:"
|
|
echo " ✅ All application tables with existing data"
|
|
echo " ✅ Cache table (for CACHE_DRIVER=database)"
|
|
echo " ✅ Sessions table (for SESSION_DRIVER=database)"
|
|
echo " ✅ Jobs & failed_jobs tables (for QUEUE_CONNECTION=database)"
|
|
echo ""
|
|
print_status "🚀 Your application is ready to use with all data!"
|
|
}
|
|
|
|
# Run main function
|
|
main "$@" |