#!/usr/bin/env bash
# Yerel / CI: env anahtarları, PHP API ping, isteğe bağlı MySQL routes tablosu.
# Gizli değerleri yazdırmaz. Kullanım: ./scripts/verify-faunamix-readiness.sh
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
cd "$ROOT"

ERR=0

need_file() {
  if [[ ! -f "$1" ]]; then
    echo "[eksik] Dosya yok: $1"
    ERR=1
  fi
}

need_kv() {
  local file="$1"
  local key="$2"
  if [[ ! -f "$file" ]]; then
    return
  fi
  if ! grep -qE "^[[:space:]]*${key}=" "$file" 2>/dev/null; then
    echo "[eksik] $file içinde $key tanımlı değil"
    ERR=1
    return
  fi
  local val
  val=$(grep -E "^[[:space:]]*${key}=" "$file" | head -1 | cut -d= -f2- | tr -d '\r')
  if [[ -z "${val// }" ]]; then
    echo "[eksik] $file içinde $key boş"
    ERR=1
  fi
}

echo "== Ortam dosyaları =="
need_file "$ROOT/api/.env"
need_file "$ROOT/frontend/.env.local"

echo "== api/.env (DB + CORS üretimde doldurulmalı) =="
need_kv "$ROOT/api/.env" "DB_HOST"
need_kv "$ROOT/api/.env" "DB_NAME"
need_kv "$ROOT/api/.env" "DB_USER"
# DB_PASS boş olabilir (yerel root) — sadece varlığını kontrol etmeyiz

echo "== frontend/.env.local =="
need_kv "$ROOT/frontend/.env.local" "NEXT_PUBLIC_API_URL"
need_kv "$ROOT/frontend/.env.local" "NEXT_PUBLIC_SITE_URL"

echo "== PHP API (isteğe bağlı) =="
API_URL="${NEXT_PUBLIC_API_URL:-}"
if [[ -f "$ROOT/frontend/.env.local" ]]; then
  API_URL=$(grep -E '^[[:space:]]*NEXT_PUBLIC_API_URL=' "$ROOT/frontend/.env.local" | head -1 | cut -d= -f2- | tr -d '\r"' || true)
fi
if [[ -n "$API_URL" ]]; then
  if curl -sfS "${API_URL}/api/health.php" >/dev/null 2>&1; then
    echo "[ok] ${API_URL}/api/health.php yanıt veriyor"
  else
    echo "[uyarı] ${API_URL}/api/health.php yanıt vermiyor — PHP sunucusu çalışıyor mu?"
  fi
else
  echo "[atlandı] NEXT_PUBLIC_API_URL okunamadı"
fi

echo "== MySQL routes tablosu (isteğe bağlı) =="
if [[ -f "$ROOT/api/.env" ]]; then
  set -a
  # shellcheck disable=SC1090
  source "$ROOT/api/.env"
  set +a
  DB_HOST="${DB_HOST:-127.0.0.1}"
  DB_PORT="${DB_PORT:-3306}"
  DB_NAME="${DB_NAME:-faunamix}"
  DB_USER="${DB_USER:-root}"
  MYSQL_BASE=(mysql -h"$DB_HOST" -P"$DB_PORT" -u"$DB_USER" --protocol=TCP --batch --skip-column-names)
  if [[ -n "${DB_PASS:-}" ]]; then
    MYSQL_BASE+=( -p"$DB_PASS" )
  fi
  if "${MYSQL_BASE[@]}" "$DB_NAME" -e "SELECT 1 FROM information_schema.tables WHERE table_schema = DATABASE() AND table_name = 'routes' LIMIT 1;" 2>/dev/null | grep -q 1; then
    echo "[ok] routes tablosu var ($DB_NAME)"
  else
    echo "[uyarı] routes tablosu yok veya DB erişilemedi — ./scripts/run-database-migrations.sh çalıştırın"
    ERR=1
  fi
fi

if [[ "$ERR" -ne 0 ]]; then
  echo ""
  echo "Sonuç: bazı kontroller başarısız (yukarıdaki [eksik]/[uyarı] satırlarına bakın)."
  exit 1
fi
echo ""
echo "Sonuç: temel kontroller tamam."
exit 0
