#!/bin/bash

# Automated MySQL Database Backup Script with Gzip Compression & S3 Sync
# Project: Indian Books Worldwide

BACKUP_DIR="/var/backups/indian-books-db"
DATE=$(date +%Y-%m-%d_%H-%M-%S)
DB_CONTAINER="ibw_mysql_prod"
DB_NAME="indian_books_db"
DB_USER="ibw_user"
DB_PASS="ibw_secure_password"
BACKUP_FILE="${BACKUP_DIR}/backup_${DB_NAME}_${DATE}.sql.gz"

mkdir -p ${BACKUP_DIR}

echo "[$(date)] Starting MySQL Database Backup for ${DB_NAME}..."

# Execute mysqldump inside container and compress output
docker exec ${DB_CONTAINER} mysqldump -u${DB_USER} -p${DB_PASS} ${DB_NAME} | gzip > ${BACKUP_FILE}

if [ $? -eq 0 ]; then
    echo "[$(date)] Backup created successfully: ${BACKUP_FILE}"
    
    # Optional S3 Sync (If AWS CLI is configured)
    if command -v aws &> /dev/null; then
        aws s3 cp ${BACKUP_FILE} s3://ibw-db-backups/daily/ --storage-class STANDARD_IA
        echo "[$(date)] Synced backup to AWS S3 bucket ibw-db-backups"
    fi

    # Purge local backups older than 14 days
    find ${BACKUP_DIR} -type f -name "*.sql.gz" -mtime +14 -exec rm -f {} \;
    echo "[$(date)] Purged local backups older than 14 days."
else
    echo "[ERROR] Database backup failed!" >&2
    exit 1
fi
