#!/usr/bin/env bash
# ============================================================
# Karch Service · Geraeteverwaltung — Installation
# Richtet die App als systemd-Dienst ein.
# Ausfuehren im App-Verzeichnis:  sudo bash install.sh
# ============================================================
set -e

APP="karch-geraetemanager"
DIR="$(cd "$(dirname "$0")" && pwd)"
SERVICE="/etc/systemd/system/${APP}.service"
PORT="${PORT:-3006}"

echo ">>> Karch Geraeteverwaltung — Installation"
echo ">>> Verzeichnis: $DIR"
echo ">>> Port:        $PORT"

# 1) Node vorhanden?
if ! command -v node >/dev/null 2>&1; then
  echo "!! Node.js ist nicht installiert. Bitte zuerst Node installieren (z. B. 'apt install nodejs')."
  exit 1
fi
echo ">>> Node-Version: $(node -v)"

# 2) Datenverzeichnis sicherstellen
mkdir -p "$DIR/data"

# 3) systemd-Unit schreiben (Pfad/Port dynamisch)
echo ">>> Schreibe $SERVICE"
cat > "$SERVICE" <<EOF
[Unit]
Description=Karch Service - Geraeteverwaltung (Geraetemanager)
After=network.target

[Service]
Type=simple
WorkingDirectory=$DIR
ExecStart=$(command -v node) $DIR/server.js
Environment=PORT=$PORT
Environment=HOST=0.0.0.0
Restart=always
RestartSec=3
User=root
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target
EOF

# 4) Dienst aktivieren und starten
echo ">>> Dienst aktivieren und starten"
systemctl daemon-reload
systemctl enable "$APP" >/dev/null 2>&1 || true
systemctl restart "$APP"

sleep 1
echo ">>> Status:"
systemctl --no-pager --full status "$APP" | head -n 8 || true

echo ""
echo ">>> Fertig. Die App laeuft auf  http://<server>:$PORT/"
echo ">>> Logs:     journalctl -u $APP -f"
echo ">>> Neustart: systemctl restart $APP"
