#!/usr/bin/env bash
set -euo pipefail

APP_DIR="/var/www/html"
cd "${APP_DIR}"

if [ ! -f "vendor/autoload.php" ]; then
  composer install --no-dev --optimize-autoloader --no-interaction --no-progress --prefer-dist
fi

if [ ! -f ".env" ]; then
  cp .env.example .env || true
fi

# Runtime local para demos split-repo: forzar SQLite por defecto para evitar
# intentos de conexion MySQL definidos en .env.example durante docker local.
if grep -q "^DB_CONNECTION=" .env 2>/dev/null; then
  sed -i "s|^DB_CONNECTION=.*|DB_CONNECTION=sqlite|" .env
else
  printf "\nDB_CONNECTION=sqlite\n" >> .env
fi

if grep -q "^DB_DATABASE=" .env 2>/dev/null; then
  sed -i "s|^DB_DATABASE=.*|DB_DATABASE=${APP_DIR}/database/database.sqlite|" .env
else
  printf "DB_DATABASE=${APP_DIR}/database/database.sqlite\n" >> .env
fi

if ! grep -q "^APP_KEY=base64:" .env 2>/dev/null; then
  APP_KEY_VALUE="base64:$(php -r 'echo base64_encode(random_bytes(32));')"
  if grep -q "^APP_KEY=" .env 2>/dev/null; then
    sed -i "s|^APP_KEY=.*|APP_KEY=${APP_KEY_VALUE}|" .env
  else
    printf "\nAPP_KEY=%s\n" "${APP_KEY_VALUE}" >> .env
  fi
fi

if grep -q "^DB_CONNECTION=sqlite" .env 2>/dev/null; then
  mkdir -p database
  touch database/database.sqlite
fi

php artisan config:clear || true
php artisan route:clear || true
php artisan view:clear || true

if [ "${AUTO_MIGRATE:-0}" = "1" ]; then
  php artisan migrate --force --no-interaction || true
fi

if [ "$#" -gt 0 ]; then
  exec "$@"
fi

exec php artisan serve --host=0.0.0.0 --port=8000
