#!/usr/bin/env bash
# 00-arranque.sh — levanta Valet en local con una SQLite de usar y tirar.
#
# Uso:  ./00-arranque.sh
#
# Decisiones de esta demo (todas verificadas ejecutándola):
#   * Binario DEBUG (`target/debug/valet`). El `release` está caducado y revienta
#     al migrar con `no such module: vec0`.
#   * Se ejecuta DESDE la raíz del repositorio: las migraciones se resuelven por
#     ruta relativa (`migrations/`). Desde otro `cwd` falla.
#   * AUTH_ENABLED=false: toda la API `/api/*` opera como el usuario `dev`, sin
#     PocketID y sin cookie de sesión. Es lo que permite la demo sin montar OIDC.
#     La ruta de ingesta (`POST /api/notifications`) sigue exigiendo token.
#   * NO se exige OPENROUTER_API_KEY en el arranque: sin ella cae a Ollama y deja
#     el RAG desactivado. No se necesita ninguna credencial de LLM.
#   * La DATABASE_URL apunta a $WORKDIR, nunca a una base de datos real.
set -euo pipefail

REPO="${VALET_REPO:-/data/rust/valet}"
WORK="${WORKDIR:-/tmp/opencode/valet-847}"
HOST="${HOST:-127.0.0.1}"
PORT="${PORT:-3458}"

mkdir -p "$WORK"
# SQLite limpia en cada arranque (borra también WAL/SHM).
rm -f "$WORK"/valet-demo.db "$WORK"/valet-demo.db-shm "$WORK"/valet-demo.db-wal

cd "$REPO"
DATABASE_URL="sqlite:$WORK/valet-demo.db" \
AUTH_ENABLED=false \
HOST="$HOST" PORT="$PORT" \
  ./target/debug/valet > "$WORK/valet.log" 2>&1 &
echo $! > "$WORK/valet.pid"

# Espera activa a que /api/health responda.
for _ in $(seq 1 40); do
  if curl -fsS "http://$HOST:$PORT/api/health" >/dev/null 2>&1; then break; fi
  sleep 0.5
done

echo "== comando (sin secretos) =="
echo "cd $REPO"
echo "DATABASE_URL=\"sqlite:$WORK/valet-demo.db\" AUTH_ENABLED=false HOST=$HOST PORT=$PORT ./target/debug/valet"
echo
echo "== health =="
curl -s -w "\n[%{http_code}]\n" "http://$HOST:$PORT/api/health"
echo
echo "PID=$(cat "$WORK/valet.pid")  ·  log: $WORK/valet.log"
echo "Para parar el servidor: ./99-parar.sh"
