#!/bin/bash
# BreakPilot - Selektiver Service-Start für Mac Mini
# Spart GPU/CPU Ressourcen indem nur benötigte Services gestartet werden

COMPOSE_FILE="$HOME/Projekte/breakpilot-pwa/docker-compose.yml"
cd "$HOME/Projekte/breakpilot-pwa"

show_help() {
    echo "BreakPilot Service Manager"
    echo "=========================="
    echo ""
    echo "Verwendung: $0 <profil>"
    echo ""
    echo "Profile:"
    echo "  core        - Basis-Services (postgres, valkey, mailpit, minio)"
    echo "  dev         - Entwicklung (core + backend, website, consent, billing)"
    echo "  klausur     - Klausurkorrektur (dev + klausur-service, embedding, qdrant)"
    echo "  school      - Schulverwaltung (dev + school-service)"
    echo "  jitsi       - Videokonferenz (dev + jitsi stack)"
    echo "  erp         - ERPNext (dev + erpnext stack)"
    echo "  chat        - LibreChat/RAG (separat starten)"
    echo "  all         - Alle Services (nicht empfohlen!)"
    echo "  stop        - Alle Services stoppen"
    echo "  status      - Status anzeigen"
    echo ""
    echo "Beispiel: $0 dev"
}

start_core() {
    echo "Starte Core-Services..."
    docker-compose up -d postgres valkey mailpit minio
}

start_dev() {
    start_core
    echo "Starte Entwicklungs-Services..."
    docker-compose up -d backend website consent-service billing-service
}

start_klausur() {
    start_dev
    echo "Starte Klausur-Services..."
    docker-compose up -d klausur-service embedding-service qdrant
}

start_school() {
    start_dev
    echo "Starte School-Service..."
    docker-compose up -d school-service
}

start_jitsi() {
    start_dev
    echo "Starte Jitsi-Stack..."
    docker-compose up -d jitsi-web jitsi-xmpp jitsi-jicofo jitsi-jvb
}

start_erp() {
    start_dev
    echo "Starte ERPNext-Stack..."
    docker-compose up -d erpnext-db erpnext-redis-queue erpnext-redis-cache \
        erpnext-backend erpnext-websocket erpnext-scheduler \
        erpnext-worker-short erpnext-frontend
}

start_all() {
    echo "WARNUNG: Startet ALLE Services - hoher Ressourcenverbrauch!"
    read -p "Fortfahren? (y/n) " -n 1 -r
    echo
    if [[ $REPLY =~ ^[Yy]$ ]]; then
        docker-compose up -d
    fi
}

stop_all() {
    echo "Stoppe alle Services..."
    docker-compose down
}

show_status() {
    echo "=== Laufende Container ==="
    docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | head -20
    echo ""
    echo "=== Ressourcen ==="
    docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}" | head -15
}

case "$1" in
    core)    start_core ;;
    dev)     start_dev ;;
    klausur) start_klausur ;;
    school)  start_school ;;
    jitsi)   start_jitsi ;;
    erp)     start_erp ;;
    all)     start_all ;;
    stop)    stop_all ;;
    status)  show_status ;;
    *)       show_help ;;
esac
