#!/bin/bash
# ═══════════════════════════════════════════════════════════════════
# TheKetoBay — Backup Script
# Usage: bash backup.sh
# Cron: 0 2 * * * /var/www/theketobay/infrastructure/backup.sh
# ═══════════════════════════════════════════════════════════════════

APP_DIR="/var/www/theketobay"
BACKUP_DIR="$APP_DIR/infrastructure/db-backup"
DATE=$(date +%Y%m%d_%H%M%S)
KEEP_DAYS=14

mkdir -p $BACKUP_DIR

echo "🗄️  TheKetoBay Backup — $DATE"

# ── Database backup ────────────────────────────────────────────────
echo "  Backing up PostgreSQL..."
docker exec ketobay_db pg_dump -U ketobay ketobay | gzip > "$BACKUP_DIR/db_$DATE.sql.gz"
echo "  ✅ DB backup: db_$DATE.sql.gz ($(du -sh $BACKUP_DIR/db_$DATE.sql.gz | cut -f1))"

# ── .env backup ────────────────────────────────────────────────────
cp $APP_DIR/.env "$BACKUP_DIR/env_$DATE.bak"
echo "  ✅ .env backed up"

# ── MinIO data (uploads) ───────────────────────────────────────────
# Uncomment if you want to backup uploaded files too:
# docker exec ketobay_minio mc mirror /data "$BACKUP_DIR/minio_$DATE/"

# ── Cleanup old backups ────────────────────────────────────────────
find $BACKUP_DIR -name "db_*.sql.gz" -mtime +$KEEP_DAYS -delete
find $BACKUP_DIR -name "env_*.bak" -mtime +$KEEP_DAYS -delete
echo "  ✅ Cleaned backups older than $KEEP_DAYS days"

echo "  📊 Backup size: $(du -sh $BACKUP_DIR | cut -f1)"
echo "  Done: $(date)"

# ── Optional: Send backup to remote storage ─────────────────────
# Uncomment and configure for remote backup (e.g. rclone to S3/Backblaze):
# rclone copy "$BACKUP_DIR/db_$DATE.sql.gz" remote:theketobay-backups/
