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

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
DATA_DIR="${TMPDIR:-/tmp}/hrms-mysql"
SOCKET="${DATA_DIR}/mysql.sock"
MYSQL_PORT="${DB_PORT:-3307}"

if ! mysqladmin --protocol=socket --socket="${SOCKET}" -uroot ping >/dev/null 2>&1; then
  mkdir -p "${DATA_DIR}"

  if [ ! -d "${DATA_DIR}/mysql" ]; then
    mysqld --initialize-insecure --datadir="${DATA_DIR}" >/dev/null 2>&1
  fi

  mysqld \
    --datadir="${DATA_DIR}" \
    --socket="${SOCKET}" \
    --port="${MYSQL_PORT}" \
    --bind-address=127.0.0.1 \
    --pid-file="${DATA_DIR}/mysql.pid" \
    --log-error="${DATA_DIR}/mysql.log" \
    --daemonize

  for attempt in $(seq 1 30); do
    if mysqladmin --protocol=socket --socket="${SOCKET}" -uroot ping >/dev/null 2>&1; then
      break
    fi
    sleep 1
  done

  mysql --protocol=socket --socket="${SOCKET}" -uroot -e "CREATE DATABASE IF NOT EXISTS \`${DB_DATABASE:-hrms}\`"
fi

cd "${ROOT}"
php artisan config:clear
php artisan migrate --seed --force
php artisan config:cache
exec php artisan serve --host=0.0.0.0 --port="${PORT:-24170}"