#!/usr/bin/env bash
# Canlı vitrin DB (genelde faunamix @ Railway public TCP) — tüm migration zincirini tek seferde uygular.
#
# Önkoşul: api/.env.railway (örnek: cp api/env.railway.example api/.env.railway)
# PhpStorm’daki bağlantı: host, port, user, pass, veritabanı adı = DB_NAME
#
# Kullanım (proje kökünden):
#   ./scripts/migrate-production-db.sh
#
# Şifreyi dosyada tutmamak (tek seferlik):
#   RAILWAY_DB_PASS='…' ./scripts/migrate-production-db.sh
set -euo pipefail

ROOT="$(cd "$(dirname "$0")/.." && pwd)"
ENV_FILE="${FAUNAMIX_ENV_FILE:-$ROOT/api/.env.railway}"

if [[ ! -f "$ENV_FILE" ]]; then
  echo "Eksik: $ENV_FILE"
  echo "  cp api/env.railway.example api/.env.railway"
  echo "  PhpStorm → Railway bağlantısındaki host, port, DB adı (faunamix), kullanıcı ve şifreyi yazın."
  exit 1
fi

set -a
# shellcheck disable=SC1090
source "$ENV_FILE"
set +a

if [[ -n "${RAILWAY_DB_PASS:-}" ]]; then
  DB_PASS="$RAILWAY_DB_PASS"
fi

# Örnek env’de kalan placeholder veya boş şifre → api/.env.railway-api (aynı host/user)
RAILWAY_EXAMPLE_DB_PASS='Railway_MySQL_servisi_PUBLIC_URL_icinden'
RAILWAY_API_ENV="$ROOT/api/.env.railway-api"
if [[ -z "${RAILWAY_DB_PASS:-}" && -f "$RAILWAY_API_ENV" ]]; then
  if [[ -z "${DB_PASS:-}" || "$DB_PASS" == "$RAILWAY_EXAMPLE_DB_PASS" ]]; then
    _api_pass="$(grep -E '^DB_PASS=' "$RAILWAY_API_ENV" | tail -1 | cut -d= -f2- || true)"
    if [[ -n "$_api_pass" && "$_api_pass" != "$RAILWAY_EXAMPLE_DB_PASS" ]]; then
      DB_PASS="$_api_pass"
      echo "Not: api/.env.railway içindeki DB_PASS örnek/boş — şifre api/.env.railway-api dosyasından alındı."
      echo "      Kalıcı düzeltme: DB_PASS satırını PhpStorm/Railway şifresiyle api/.env.railway içinde güncelleyin."
      echo ""
    fi
  fi
fi

DB_HOST="${DB_HOST:-}"
DB_NAME="${DB_NAME:-}"
DB_USER="${DB_USER:-}"

if [[ -z "$DB_HOST" || -z "$DB_NAME" || -z "$DB_USER" ]]; then
  echo "api/.env.railway içinde DB_HOST, DB_NAME ve DB_USER dolu olmalı."
  exit 1
fi

if [[ "$DB_NAME" == "railway" ]]; then
  echo "Hata: DB_NAME=railway — canlı site verisi çoğu kurulumda faunamix veritabanındadır."
  echo "PhpStorm'da SELECT DATABASE(); sonucu ne ise DB_NAME onu yazın (genelde faunamix)."
  exit 1
fi

if [[ "$DB_HOST" == *".railway.internal"* ]]; then
  echo "Hata: DB_HOST internal (*.railway.internal) — yerel Mac'ten çalışmaz."
  echo "Railway → MySQL → Public network / proxy host (ör. *.proxy.rlwy.net) kullanın."
  exit 1
fi

echo "==> Canlı migration: $DB_NAME @ $DB_HOST:${DB_PORT:-3306}"
echo "    Env: $ENV_FILE"
echo ""

export FAUNAMIX_ENV_FILE="$ENV_FILE"
"$ROOT/scripts/run-database-migrations.sh"

echo ""
echo "==> Şema doğrulama (e-ticaret + vitrin tabloları)…"
php "$ROOT/scripts/verify-commerce-schema.php"

echo ""
echo "==> Sayfa mimarisi hızlı kontrol (mysql)…"
MYSQL_BASE=(mysql -h"$DB_HOST" -P"${DB_PORT:-3306}" -u"$DB_USER" --protocol=TCP --default-character-set=utf8mb4)
if [[ -n "${DB_PASS:-}" ]]; then
  MYSQL_BASE+=( -p"$DB_PASS" )
fi
if [[ "$DB_HOST" == *".rlwy.net"* ]]; then
  if mysql --help 2>&1 | grep -q 'ssl-mode'; then
    MYSQL_BASE+=( --ssl-mode=REQUIRED )
  elif mysql --help 2>&1 | grep -q -- '--ssl'; then
    MYSQL_BASE+=( --ssl --ssl-verify-server-cert=0 )
  fi
fi

"${MYSQL_BASE[@]}" "$DB_NAME" -e "
SHOW COLUMNS FROM site_pages LIKE 'page_template';
SELECT path, page_template FROM site_pages WHERE path IN ('/iletisim','/hakkimizda') LIMIT 5;
SHOW TABLES LIKE 'routes';
SELECT path, type FROM routes WHERE path IN ('/iletisim','/hakkimizda') LIMIT 5;
" || echo "(mysql istemcisi yoksa yukarıdaki sorguları PhpStorm'da çalıştırın.)"

echo ""
echo "Tamam. Site: /iletisim ve /hakkimizda — menü URL'sinin sayfa path'i ile aynı olduğundan emin olun."
