#!/bin/bash
# Bahiry Group CMS Startup Script for Cloud Run & Local Dev

set -e

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"

# Ensure runtime directories exist
mkdir -p "$SCRIPT_DIR/bin" "$SCRIPT_DIR/database" "$SCRIPT_DIR/public/uploads" "$SCRIPT_DIR/public/assets/images" /tmp

if [ ! -s "$SCRIPT_DIR/bin/frankenphp" ]; then
    echo "Downloading FrankenPHP binary..."
    curl -fsSL https://github.com/dunglas/frankenphp/releases/latest/download/frankenphp-linux-x86_64 -o "$SCRIPT_DIR/bin/frankenphp" || true
fi

chmod +x "$SCRIPT_DIR/bin/frankenphp" 2>/dev/null || true
chmod +x "$SCRIPT_DIR/bin/php" 2>/dev/null || true

export PATH="$SCRIPT_DIR/bin:$PATH"

# 1. Start MariaDB if available in the environment (optional)
if command -v mysqladmin >/dev/null 2>&1; then
    if ! mysqladmin ping --silent > /dev/null 2>&1; then
        if [ ! -d "/var/lib/mysql/mysql" ]; then
            mysql_install_db --user=mysql --datadir=/var/lib/mysql > /dev/null 2>&1 || true
        fi
        /usr/bin/mariadbd-safe --user=mysql --datadir=/var/lib/mysql > /dev/null 2>&1 &
        sleep 2
    fi
    mysql -e "CREATE DATABASE IF NOT EXISTS bahiry_export_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER IF NOT EXISTS 'bahiry_user'@'127.0.0.1' IDENTIFIED BY 'bahiry_pass_2026!'; GRANT ALL PRIVILEGES ON bahiry_export_db.* TO 'bahiry_user'@'127.0.0.1'; FLUSH PRIVILEGES;" > /dev/null 2>&1 || true
fi

# 2. Determine PHP Runner
PHP_CLI=""
if [ -x "$SCRIPT_DIR/bin/frankenphp" ]; then
    PHP_CLI="$SCRIPT_DIR/bin/frankenphp php-cli"
elif [ -x "$SCRIPT_DIR/bin/php" ]; then
    PHP_CLI="$SCRIPT_DIR/bin/php"
elif command -v php >/dev/null 2>&1; then
    PHP_CLI="$(command -v php)"
fi

if [ -n "$PHP_CLI" ]; then
    echo "Running database initialization..."
    $PHP_CLI "$SCRIPT_DIR/database/migrate_sqlite.php" || true
    $PHP_CLI "$SCRIPT_DIR/database/migrate.php" > /dev/null 2>&1 || true
    $PHP_CLI "$SCRIPT_DIR/database/seed_images.php" > /dev/null 2>&1 || true
fi

# 3. Start Web Server on Port 3000
echo "Starting Bahiry Group CMS on port 3000..."
if [ -x "$SCRIPT_DIR/bin/frankenphp" ]; then
    exec "$SCRIPT_DIR/bin/frankenphp" php-server --listen :3000 --root "$SCRIPT_DIR/public"
elif [ -x "$SCRIPT_DIR/bin/php" ]; then
    exec "$SCRIPT_DIR/bin/php" -S 0.0.0.0:3000 -t "$SCRIPT_DIR/public" "$SCRIPT_DIR/public/index.php"
elif command -v php >/dev/null 2>&1; then
    exec php -S 0.0.0.0:3000 -t "$SCRIPT_DIR/public" "$SCRIPT_DIR/public/index.php"
else
    echo "FATAL: No PHP executable available."
    exit 1
fi
