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

ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
SMOKE_SCRIPT="$ROOT_DIR/tests/admin_migration_module_smoke.php"

if php -r 'exit(in_array("sqlite", PDO::getAvailableDrivers(), true) ? 0 : 1);'; then
  exec php "$SMOKE_SCRIPT"
fi

if ! command -v sudo >/dev/null 2>&1; then
  echo "Admin migration module smoke cannot provision MariaDB fallback: sudo indisponivel" >&2
  exit 1
fi

db_suffix="$(openssl rand -hex 5)"
user_suffix="$(openssl rand -hex 5)"
pass_suffix="$(openssl rand -base64 18 | tr -d '\n' | tr '/+' 'AZ')"
db_name="cms_admin_smoke_${db_suffix}"
db_user="cms_admin_smoke_${user_suffix}"
db_pass="${pass_suffix}"
socket_path="$(sudo -n mysql -Nse "SHOW VARIABLES LIKE 'socket'" | awk '{print $2}')"

cleanup() {
  sudo -n mysql <<SQL >/dev/null 2>&1 || true
DROP DATABASE IF EXISTS \`${db_name}\`;
DROP USER IF EXISTS '${db_user}'@'localhost';
FLUSH PRIVILEGES;
SQL
}

trap cleanup EXIT

sudo -n mysql <<SQL
CREATE DATABASE \`${db_name}\` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER '${db_user}'@'localhost' IDENTIFIED BY '${db_pass}';
GRANT ALL PRIVILEGES ON \`${db_name}\`.* TO '${db_user}'@'localhost';
FLUSH PRIVILEGES;
SQL

export CMS_ADMIN_SMOKE_DSN="mysql:unix_socket=${socket_path};dbname=${db_name};charset=utf8mb4"
export CMS_ADMIN_SMOKE_DB_USER="${db_user}"
export CMS_ADMIN_SMOKE_DB_PASSWORD="${db_pass}"
export CMS_ADMIN_SMOKE_TABLE_PREFIX="cms_"

exec php "$SMOKE_SCRIPT"
