#!/usr/bin/env bash
# ─────────────────────────────────────────────────────────────
# Avaria Team OS — Produktionsstart (screen-tauglich)
# Verwendung auf dem Server:
#   screen -S avaria        # neue screen-Session
#   ./start.sh              # startet den Server
#   (Strg+A, dann D)        # Session verlassen, Server läuft weiter
#   screen -r avaria        # später wieder anhängen
# ─────────────────────────────────────────────────────────────
set -euo pipefail
cd "$(dirname "$0")"

export NODE_ENV=production
PORT="${PORT:-3000}"
HOST="${HOST:-0.0.0.0}"

# Abhängigkeiten sicherstellen
if [ ! -d node_modules ]; then
  echo "→ Installiere Abhängigkeiten …"
  npm ci
fi

# Prisma-Client erzeugen (liefert die Typen für den Build)
npx prisma generate >/dev/null

# Produktions-Build sicherstellen.
# Geprüft wird BUILD_ID, nicht der Ordner: Nach einem abgebrochenen Build
# existiert .next zwar, ist aber unvollständig — dann startet der Server mit
# fehlenden Bausteinen (kaputtes Layout) statt neu zu bauen.
if [ ! -f .next/BUILD_ID ]; then
  if [ -d .next ]; then
    echo "→ Unvollständiger Build gefunden — wird verworfen …"
    rm -rf .next
  fi
  echo "→ Erzeuge Produktions-Build …"
  npm run build
fi

echo "→ Starte Avaria Team OS auf http://$HOST:$PORT"
exec npm run start -- -H "$HOST" -p "$PORT"
