#!/bin/bash

# BondaCare MySQL Setup Script
# This script will help you migrate from SQLite to MySQL

echo "=========================================="
echo "BondaCare MySQL Migration Script"
echo "=========================================="
echo ""

# Colors for output
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color

# Step 1: Check if MySQL is running
echo -e "${YELLOW}Step 1: Checking MySQL connection...${NC}"
if ! command -v mysql &> /dev/null; then
    echo -e "${RED}ERROR: MySQL is not installed or not in PATH${NC}"
    echo "Please install MySQL first:"
    echo "  macOS: brew install mysql"
    echo "  Ubuntu: sudo apt-get install mysql-server"
    exit 1
fi

# Step 2: Get MySQL credentials
echo -e "\n${YELLOW}Step 2: MySQL Configuration${NC}"
echo "Please provide your MySQL credentials:"
read -p "MySQL Host [127.0.0.1]: " DB_HOST
DB_HOST=${DB_HOST:-127.0.0.1}

read -p "MySQL Port [3306]: " DB_PORT
DB_PORT=${DB_PORT:-3306}

read -p "MySQL Root Username [root]: " DB_ROOT_USER
DB_ROOT_USER=${DB_ROOT_USER:-root}

read -sp "MySQL Root Password: " DB_ROOT_PASSWORD
echo ""

read -p "Database Name [bondacare]: " DB_NAME
DB_NAME=${DB_NAME:-bondacare}

read -p "Database Username [root]: " DB_USERNAME
DB_USERNAME=${DB_USERNAME:-root}

read -sp "Database User Password (leave empty if same as root): " DB_PASSWORD
echo ""

# Step 3: Test MySQL connection
echo -e "\n${YELLOW}Step 3: Testing MySQL connection...${NC}"
if mysql -h "$DB_HOST" -P "$DB_PORT" -u "$DB_ROOT_USER" -p"$DB_ROOT_PASSWORD" -e "SELECT 1;" &> /dev/null; then
    echo -e "${GREEN}✓ MySQL connection successful!${NC}"
else
    echo -e "${RED}✗ Failed to connect to MySQL${NC}"
    echo "Please check your credentials and try again."
    exit 1
fi

# Step 4: Create database
echo -e "\n${YELLOW}Step 4: Creating database '$DB_NAME'...${NC}"
mysql -h "$DB_HOST" -P "$DB_PORT" -u "$DB_ROOT_USER" -p"$DB_ROOT_PASSWORD" -e "CREATE DATABASE IF NOT EXISTS \`$DB_NAME\` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" 2>/dev/null

if [ $? -eq 0 ]; then
    echo -e "${GREEN}✓ Database created successfully!${NC}"
else
    echo -e "${RED}✗ Failed to create database${NC}"
    exit 1
fi

# Step 5: Update .env file
echo -e "\n${YELLOW}Step 5: Updating .env file...${NC}"
sed -i.bak "s/^DB_CONNECTION=.*/DB_CONNECTION=mysql/" .env
sed -i.bak "s/^DB_HOST=.*/DB_HOST=$DB_HOST/" .env
sed -i.bak "s/^DB_PORT=.*/DB_PORT=$DB_PORT/" .env
sed -i.bak "s|^DB_DATABASE=.*|DB_DATABASE=$DB_NAME|" .env
sed -i.bak "s/^DB_USERNAME=.*/DB_USERNAME=$DB_USERNAME/" .env
sed -i.bak "s/^DB_PASSWORD=.*/DB_PASSWORD=$DB_PASSWORD/" .env

echo -e "${GREEN}✓ .env file updated!${NC}"

# Step 6: Clear config cache
echo -e "\n${YELLOW}Step 6: Clearing configuration cache...${NC}"
php artisan config:clear
php artisan cache:clear

# Step 7: Run migrations
echo -e "\n${YELLOW}Step 7: Running migrations...${NC}"
php artisan migrate:fresh --force

if [ $? -eq 0 ]; then
    echo -e "${GREEN}✓ Migrations completed successfully!${NC}"
else
    echo -e "${RED}✗ Migration failed${NC}"
    exit 1
fi

# Step 8: Seed database (optional)
echo -e "\n${YELLOW}Step 8: Would you like to seed the database with sample data?${NC}"
read -p "Seed database? (y/n) [n]: " SEED_DB
SEED_DB=${SEED_DB:-n}

if [ "$SEED_DB" = "y" ] || [ "$SEED_DB" = "Y" ]; then
    echo "Seeding database..."
    php artisan db:seed
    echo -e "${GREEN}✓ Database seeded successfully!${NC}"
fi

# Summary
echo -e "\n=========================================="
echo -e "${GREEN}MySQL Migration Completed Successfully!${NC}"
echo "=========================================="
echo ""
echo "Database Configuration:"
echo "  Host: $DB_HOST"
echo "  Port: $DB_PORT"
echo "  Database: $DB_NAME"
echo "  Username: $DB_USERNAME"
echo ""
echo "Next steps:"
echo "  1. Start your application: php artisan serve"
echo "  2. Access at: http://localhost:8000"
echo ""
echo -e "${YELLOW}Note: Your old SQLite database has been preserved at:${NC}"
echo "  database/database.sqlite"
echo ""
