#!/usr/bin/env bash
# OPENBUREAU — Backup der Postgres-DB.
#
# WICHTIG: Foren, Threads und Wortmeldungen (Dialog) leben NUR in Postgres —
# anders als content/*.md sind sie NICHT in Git. Ohne Backup sind sie beim
# Verlust des Volumes weg. Dieses Skript dumpt die ganze DB komprimiert weg.
#
# Auf dem Host/LXC im cms/-Verzeichnis ausführen (oder per Cron, siehe README):
#   bash scripts/backup-db.sh
#
# Wiederherstellen:
#   gunzip -c backups/openbureau-<TS>.sql.gz \
#     | docker compose exec -T db psql -U supabase_admin -d postgres
set -euo pipefail

# Ins cms/-Verzeichnis (eine Ebene über scripts/).
cd "$(dirname "$0")/.."

DIR="${BACKUP_DIR:-./backups}"
KEEP="${BACKUP_KEEP:-14}"        # wie viele Dumps behalten
mkdir -p "$DIR"

TS="$(date +%Y%m%d-%H%M%S)"
OUT="$DIR/openbureau-$TS.sql.gz"

docker compose exec -T db pg_dump -U supabase_admin -d postgres | gzip > "$OUT"
echo "✓ Backup: $OUT ($(du -h "$OUT" | cut -f1))"

# Rotation: nur die letzten $KEEP Dumps behalten.
ls -1t "$DIR"/openbureau-*.sql.gz 2>/dev/null | tail -n +$((KEEP + 1)) | xargs -r rm -f
