#!/bin/bash
# Redemption House — Backup Script
# Usage: ./deploy/backup.sh

set -e

# Configuration
BACKUP_DIR="/path/to/redemption/backups"
DATE=$(date +%Y%m%d_%H%M%S)
RETAIN_DAYS=14
DB_NAME="${REDENPTION_DB:-redemption_house}"
DB_USER="${REDENPTION_DB_USER:-root}"
DB_PASS="${REDENPTION_DB_PASS:-}"

# Directories to backup
SITE_DIR="/path/to/redemption/site"
STORAGE_DIR="/path/to/redemption/storage"

# Create backup directory
mkdir -p "$BACKUP_DIR"

echo "Starting backup at $(date)"

# Database backup
echo "Backing up database: $DB_NAME"
if [ -n "$DB_PASS" ]; then
    mysqldump -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" > "$BACKUP_DIR/db_$DATE.sql"
else
    mysqldump -u "$DB_USER" "$DB_NAME" > "$BACKUP_DIR/db_$DATE.sql"
fi

# Site backup
echo "Backing up site files"
tar -czf "$BACKUP_DIR/site_$DATE.tar.gz" \
    --exclude='node_modules' \
    --exclude='vendor' \
    --exclude='.git' \
    "$SITE_DIR"

# Storage backup (uploads, logs)
if [ -d "$STORAGE_DIR" ]; then
    echo "Backing up storage"
    tar -czf "$BACKUP_DIR/storage_$DATE.tar.gz" "$STORAGE_DIR"
fi

# Prune old backups
echo "Pruning backups older than $RETAIN_DAYS days"
find "$BACKUP_DIR" -type f -mtime +$RETAIN_DAYS -delete

echo "Backup completed at $(date)"
echo "Backups stored in: $BACKUP_DIR"
