#!/usr/bin/env bash
# ============================================================
# backup-client.sh — Respaldar un cliente CXP
# Uso: bash backup-client.sh <nombre>
# ============================================================
set -euo pipefail

GREEN='\033[0;32m'; CYAN='\033[0;36m'; RED='\033[0;31m'; NC='\033[0m'

WEB_ROOT="/var/www/html"
BACKUP_DIR="/var/backups/cxp"
DATE=$(date +%Y%m%d_%H%M%S)

CLIENT="${1:-}"
[ -z "$CLIENT" ] && { echo "Uso: $0 <nombre>"; exit 1; }

ENV_FILE="$WEB_ROOT/$CLIENT/mbcxp/.env"
[ -f "$ENV_FILE" ] || { echo -e "${RED}No existe: $ENV_FILE${NC}"; exit 1; }

DB_HOST=$(grep '^DB_HOST=' "$ENV_FILE" | cut -d= -f2)
DB_PORT=$(grep '^DB_PORT=' "$ENV_FILE" | cut -d= -f2)
DB_NAME=$(grep '^DB_NAME=' "$ENV_FILE" | cut -d= -f2)
DB_USER=$(grep '^DB_USER=' "$ENV_FILE" | cut -d= -f2)
DB_PASS=$(grep '^DB_PASS=' "$ENV_FILE" | cut -d= -f2)

mkdir -p "$BACKUP_DIR/$CLIENT"

# BD (usando mysql client del contenedor app)
CONTAINER="cxp-${CLIENT}-app"
echo -e "${CYAN}[backup]${NC} $CLIENT → $BACKUP_DIR/$CLIENT/"

docker exec "$CONTAINER" mysqldump -h "$DB_HOST" -P "$DB_PORT" \
    -u "$DB_USER" -p"$DB_PASS" \
    --routines --triggers --single-transaction --set-gtid-purged=OFF \
    "$DB_NAME" 2>/dev/null | gzip > "$BACKUP_DIR/$CLIENT/${DB_NAME}_${DATE}.sql.gz"

echo -e "${GREEN}[✅]${NC} BD: ${DB_NAME}_${DATE}.sql.gz"

# Uploads (desde volumen Docker)
VOLUME="cxp-${CLIENT}-uploads"
if docker volume inspect "$VOLUME" &>/dev/null; then
    docker run --rm -v "${VOLUME}:/data:ro" -v "$BACKUP_DIR/$CLIENT:/backup" \
        alpine tar czf "/backup/uploads_${DATE}.tar.gz" -C /data . 2>/dev/null
    echo -e "${GREEN}[✅]${NC} Uploads: uploads_${DATE}.tar.gz"
fi

# .env
cp "$ENV_FILE" "$BACKUP_DIR/$CLIENT/env_${DATE}.bak"

# Limpiar >30 días
find "$BACKUP_DIR/$CLIENT" -type f -mtime +30 -delete 2>/dev/null || true

echo -e "${GREEN}[✅]${NC} Backup '$CLIENT' completado"
