#!/bin/bash

# =========================
# CONFIG
# =========================
USER="12-production"
PASS="O4NSh8E{^R_15U=T"
DB="12-production"
BACKUP_DIR="/var/www/we8upmb/htdocs/backup"
DATESTAMP=$(date +%Y%m%d_%H%M%S)

DUMP1="$BACKUP_DIR/${DATESTAMP}-normal.sql.gz"
DUMP2="$BACKUP_DIR/${DATESTAMP}-optimized.sql.gz"

# Ensure backup directory exists
mkdir -p "$BACKUP_DIR"


# =========================
# Function: Measure dump
# =========================
measure_dump() {
    local command="$1"
    local output_file="$2"

    local start end seconds size ratio

    echo "Running: $output_file"
    start=$(date +%s)

    # CPU-Load before (optional)
    CPU_BEFORE=$(ps -o %cpu,%mem,cmd -C mysqld --no-headers)

    # Execute dump
    bash -c "$command" > "$output_file"

    end=$(date +%s)
    seconds=$((end - start))
    size=$(du -h "$output_file" | awk '{print $1}')

    # CPU-Load after (optional)
    CPU_AFTER=$(ps -o %cpu,%mem,cmd -C mysqld --no-headers)

    echo "$seconds" "$size" "$CPU_BEFORE" "$CPU_AFTER"
}

echo "============================"
echo " Starting SQL Dump Compare"
echo "============================"
echo ""

# ----------------------------
# Dump 1: Normal
# ----------------------------
read TIME1 SIZE1 CPU1_BEFORE CPU1_AFTER <<< "$(
    measure_dump \
    "mariadb-dump -u $USER -p$PASS $DB | gzip -c" \
    "$DUMP1"
)"

# ----------------------------
# Dump 2: Optimized
# ----------------------------
read TIME2 SIZE2 CPU2_BEFORE CPU2_AFTER <<< "$(
    measure_dump \
    "mariadb-dump --skip-definer --single-transaction --routines --triggers --quick --compress -u $USER -p$PASS $DB | gzip -c" \
    "$DUMP2"
)"

echo ""
echo "============================"
echo "          RESULTS"
echo "============================"
echo ""
printf "%-25s %s\n" "Normal dump time:" "$TIME1 sec"
printf "%-25s %s\n" "Optimized dump time:" "$TIME2 sec"
printf "%-25s %s sec\n" "Difference:" "$((TIME1 - TIME2))"
echo ""
printf "%-25s %s\n" "Normal dump size:" "$SIZE1"
printf "%-25s %s\n" "Optimized dump size:" "$SIZE2"
echo ""
echo "CPU load before/after (mysqld):"
echo "Normal dump before:  $CPU1_BEFORE"
echo "Normal dump after:   $CPU1_AFTER"
echo "Optimized before:    $CPU2_BEFORE"
echo "Optimized after:     $CPU2_AFTER"
echo ""
echo "============================"
echo " Dumps written to:"
echo "$DUMP1"
echo "$DUMP2"
echo "============================"
