#!/bin/sh
# Backup diario de la BD (ERD §09) — cron de cPanel, p. ej. 2:00 am:
#   0 2 * * * /bin/sh /home/USUARIO/integracion-familiar/scripts/backup.sh
# Lee credenciales del .env (fuera del webroot). Retención: 30 días.

set -eu

RAIZ="$(cd "$(dirname "$0")/.." && pwd)"
DESTINO="$RAIZ/storage/backups"
FECHA="$(date +%Y-%m-%d)"

# shellcheck disable=SC2046
export $(grep -E '^(DB_HOST|DB_PORT|DB_DATABASE|DB_USERNAME|DB_PASSWORD)=' "$RAIZ/.env" | xargs)

mkdir -p "$DESTINO"

mysqldump --host="$DB_HOST" --port="${DB_PORT:-3306}" \
    --user="$DB_USERNAME" --password="$DB_PASSWORD" \
    --single-transaction --routines --no-tablespaces "$DB_DATABASE" \
    | gzip > "$DESTINO/backup-$FECHA.sql.gz"

# Retención: borrar backups de más de 30 días.
find "$DESTINO" -name 'backup-*.sql.gz' -mtime +30 -delete

echo "Backup creado: $DESTINO/backup-$FECHA.sql.gz"
