#!/bin/bash
# =============================================================================
# This script:
#   1. Creates a local "dev" directory (if needed)
#   2. Initializes a MySQL data directory inside it (if not already initialized)
#   3. Starts a MySQL server using that custom data directory and a local socket
#   4. Creates a WordPress database with a user and credentials for development.
#
# =============================================================================

# --- Configuration variables ---
DEV_DIR="$PWD"
MYSQL_DATA_DIR="$DEV_DIR/testdb"
MYSQL_SOCKET="$MYSQL_DATA_DIR/mysql.sock"
MYSQL_PID="$MYSQL_DATA_DIR/mysql.pid"

# WordPress database credentials - defaults from wp-config.php
WP_DB_NAME="wordpress_db"
WP_DB_USER="username_here"
WP_DB_PASS="password_here"

# --- Create necessary directories ---
echo "Creating dev directories if they do not exist..."
mkdir -p "$DEV_DIR"
mkdir -p "$MYSQL_DATA_DIR"

# --- Initialize the MySQL data directory (if needed) ---
if [ ! -f "$MYSQL_DATA_DIR/ibdata1" ]; then
    echo "Initializing MySQL data directory in $MYSQL_DATA_DIR..."
    # Using --initialize-insecure so that no root password is set (development only)
    mysqld --initialize-insecure --datadir="$MYSQL_DATA_DIR"
fi

# --- Start the MySQL server ---
echo "Starting MySQL server..."
# Start mysqld with the custom data directory, socket, and PID file.
# The ampersand (&) runs the server in the background.
mysqld \
  --innodb-buffer-pool-size=2G \
  --innodb-io-capacity=1000 \
  --innodb-flush-method=O_DIRECT \
  --innodb-flush-log-at-trx-commit=2 \
  --datadir="$MYSQL_DATA_DIR" \
  --socket="$MYSQL_SOCKET" \
  --pid-file="$MYSQL_PID" &
# Capture the MySQL server process ID
MYSQLD_PID=$!
# Allow a few seconds for the server to finish starting up.
sleep 5

# --- Create the WordPress database and user ---
echo "Creating WordPress database and user..."
mysql --socket="$MYSQL_SOCKET" -u "root" -e "CREATE DATABASE IF NOT EXISTS ${WP_DB_NAME};"
mysql --socket="$MYSQL_SOCKET" -u "root" -e "CREATE USER IF NOT EXISTS '${WP_DB_USER}'@'localhost' IDENTIFIED BY '${WP_DB_PASS}';"
mysql --socket="$MYSQL_SOCKET" -u "root" -e "GRANT ALL PRIVILEGES ON ${WP_DB_NAME}.* TO '${WP_DB_USER}'@'localhost';"
mysql --socket="$MYSQL_SOCKET" -u "root" -e "FLUSH PRIVILEGES;"

echo "Setup complete."
echo "----------------------------------------"
echo "WordPress Database Credentials:"
echo "DB_NAME:     ${WP_DB_NAME}"
echo "DB_USER:     ${WP_DB_USER}"
echo "DB_PASSWORD: ${WP_DB_PASS}"
echo "DB_HOST:     localhost:${MYSQL_SOCKET}"
echo "----------------------------------------"
echo "MySQL server started with PID: $MYSQLD_PID"
