#!/bin/bash
# ==============================================================
# BAN YARO — Ersteinrichtung auf der DiskStation
#
# Läuft auf deinem MAC, richtet DS per SSH + rsync ein.
# Kein git auf DS nötig — Dateien kommen direkt vom Mac.
#
# Aufruf: bash scripts/setup-ds.sh
# ==============================================================

set -e

DS_HOST="ds"
DS_IP="10.47.11.10"
DS_SSH_PORT="4711"
DS_PATH="/volume1/docker/ban-yaro"
ROOT="$(cd "$(dirname "$0")/.." && pwd)"

RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m'
ok()   { echo -e "${GREEN}  ✓ $1${NC}"; }
warn() { echo -e "${YELLOW}  ⚠ $1${NC}"; }
err()  { echo -e "${RED}  ✗ $1${NC}"; exit 1; }

echo ""
echo "=== Ban Yaro — Ersteinrichtung DS1621 ==="
echo ""

# ----------------------------------------------------------
# 0. SSH-Port prüfen
# ----------------------------------------------------------
echo "→ Prüfe SSH-Erreichbarkeit (${DS_IP}:${DS_SSH_PORT})..."

if ! nc -z -w3 "$DS_IP" "$DS_SSH_PORT" 2>/dev/null; then
    echo ""
    err "DS nicht erreichbar auf Port ${DS_SSH_PORT}!
       Ursachen: SSH-Port in Fritz!Box geschlossen, DS offline
       → Port öffnen, dann erneut ausführen."
fi
ok "SSH-Port ${DS_SSH_PORT} erreichbar"

if ! ssh -q -o ConnectTimeout=5 -o BatchMode=yes "$DS_HOST" exit 2>/dev/null; then
    err "SSH-Verbindung fehlgeschlagen — prüfe: ssh ${DS_HOST}"
fi
ok "SSH-Verbindung funktioniert"

# ----------------------------------------------------------
# 1. Verzeichnisse anlegen
# ----------------------------------------------------------
echo ""
echo "→ Verzeichnisse anlegen..."

ssh "$DS_HOST" "
    mkdir -p '${DS_PATH}/data/media/dogs'
    mkdir -p '${DS_PATH}/data/media/diary'
    mkdir -p '${DS_PATH}/data/media/poison'
"
ok "Verzeichnisse angelegt"

# ----------------------------------------------------------
# 2. Dateien per rsync übertragen (kein git auf DS nötig)
# ----------------------------------------------------------
echo ""
echo "→ Dateien übertragen (tar+ssh)..."

cd "${ROOT}" && COPYFILE_DISABLE=1 tar czf - \
    --exclude='.git' \
    --exclude='./data' \
    --exclude='./backend/venv' \
    --exclude='./backend/__pycache__' \
    --exclude='./.env' \
    --exclude='./*.db' \
    --exclude='./.DS_Store' \
    . | ssh "$DS_HOST" "tar xzf - -C '${DS_PATH}/'"

ok "Dateien übertragen"

# ----------------------------------------------------------
# 3. .env anlegen
# ----------------------------------------------------------
echo ""
echo "→ Konfiguration (.env)..."

ENV_EXISTS=$(ssh "$DS_HOST" "[ -f '${DS_PATH}/.env' ] && echo yes || echo no")

if [ "$ENV_EXISTS" = "yes" ]; then
    ok ".env existiert bereits"
else
    ssh "$DS_HOST" "cp '${DS_PATH}/.env.example' '${DS_PATH}/.env'"
    warn ".env angelegt — muss noch angepasst werden!"
fi

# Prüfen ob JWT_SECRET noch Default ist
JWT_UNSET=$(ssh "$DS_HOST" "grep -c 'bitte-aendern' '${DS_PATH}/.env' 2>/dev/null || echo 0")

if [ "$JWT_UNSET" -gt "0" ]; then
    echo ""
    warn "JWT_SECRET ist noch nicht gesetzt!"
    echo ""
    echo "  ┌──────────────────────────────────────────────┐"
    echo "  │ Mindestens setzen:                           │"
    echo "  │   JWT_SECRET=<langer-zufaelliger-string>     │"
    echo "  │   KI_MODE=local                              │"
    echo "  └──────────────────────────────────────────────┘"
    echo ""
    read -r -p "  .env jetzt bearbeiten? [J/n] " REPLY
    if [[ "${REPLY}" =~ ^[Jj]$|^$ ]]; then
        ssh -t "$DS_HOST" "vi '${DS_PATH}/.env'"
    else
        warn "Nicht vergessen: .env vor dem Start anpassen!"
    fi
else
    ok ".env konfiguriert"
fi

# ----------------------------------------------------------
# 4. Docker bauen und starten
# ----------------------------------------------------------
echo ""
echo "→ Docker build (dauert 2-3 Minuten)..."

ssh "$DS_HOST" "
    cd '${DS_PATH}' &&
    sudo /usr/local/bin/docker compose build &&
    sudo /usr/local/bin/docker compose up -d
"
ok "Container gestartet"

# ----------------------------------------------------------
# 5. Health-Check
# ----------------------------------------------------------
echo ""
echo "→ Warte auf App-Start..."
sleep 5

STATUS=$(ssh "$DS_HOST" \
    "sudo /usr/local/bin/docker ps --filter name=ban-yaro --format '{{.Status}}'" 2>/dev/null || true)

if echo "$STATUS" | grep -q "Up"; then
    ok "Container läuft — ${STATUS}"
else
    warn "Container-Status: '${STATUS}' — Logs prüfen: make logs"
fi

# ----------------------------------------------------------
# 6. Fertig
# ----------------------------------------------------------
echo ""
echo "=================================="
ok "Setup abgeschlossen!"
echo ""
echo "  Nächste Schritte:"
echo ""
echo "  NPM-Eintrag anlegen:"
echo "    Host:  banyaro.app"
echo "    Ziel:  http://10.47.11.10:3010"
echo ""
echo "  Logs:  make logs"
echo "  App:   https://banyaro.app"
echo ""
