#!/bin/bash
# backup-all.sh — Zentraler Backup-Runner (mandantengebündelt)
# Cronjob: täglich ab 02:00 UTC
#
# Zeitplan:
# PLATFORM  02:00 — K3s Controlplane, DMZ-Infisical, ArgoCD IT15, nginx PM
# PIDOKA    03:00 — Zammad, Matomo, n8n, Mautic, SuiteCRM, Homarr

set -euo pipefail

SCRIPTS="$(cd "$(dirname "$0")" && pwd)"
LOG_DIR="/home/node/.openclaw/workspace/backups/logs"
mkdir -p "$LOG_DIR"

RUNID=$(date -u +%Y%m%dT%H%M%SZ)
LOGFILE="$LOG_DIR/backup-all-$RUNID.log"

log()  { echo "[$(date -u +%H:%M:%SZ)] $*" | tee -a "$LOGFILE"; }
ok()   { log "✅ $*"; }
fail() { log "❌ $*"; FAILURES="$FAILURES $*"; }

FAILURES=""

run_job() {
  local label="$1"; shift
  log "--- $label START ---"
  if "$@" >> "$LOGFILE" 2>&1; then
    ok "$label"
  else
    fail "$label"
  fi
}

# ─── PLATFORM (02:00) ─────────────────────────────────
log "====== PLATFORM BACKUP START ======"

run_job "k3s-controlplane"  "$SCRIPTS/backup-app.sh" k3s-controlplane platform-cluster
run_job "dmz-infisical"     "$SCRIPTS/backup-app.sh" infisical platform-infisical
run_job "argocd-it15"       "$SCRIPTS/backup-argocd-it15.sh"
run_job "nginx-pm"          "$SCRIPTS/backup-nginx.sh"

log "====== PLATFORM BACKUP DONE ======"

# ─── PIDOKA (03:00) ───────────────────────────────────
log "====== PIDOKA BACKUP START ======"

run_job "zammad"    "$SCRIPTS/backup-app.sh" zammad    zammad          --db-dump
run_job "matomo"    "$SCRIPTS/backup-app.sh" matomo    pidoka-hf-matomo --db-dump
run_job "n8n"       "$SCRIPTS/backup-app.sh" n8n       hf-n8n
run_job "mautic"    "$SCRIPTS/backup-app.sh" mautic    hf-mautic
run_job "suitecrm"  "$SCRIPTS/backup-app.sh" suitecrm  hf-suitecrm
run_job "homarr"    "$SCRIPTS/backup-app.sh" homarr    homarr

log "====== PIDOKA BACKUP DONE ======"

# ─── Ergebnis ─────────────────────────────────────────
if [ -n "$FAILURES" ]; then
  log "FEHLER in:$FAILURES"
  exit 1
else
  log "Alle Backups erfolgreich — $RUNID"
fi
