#!/bin/bash

restoreDir=/etc/restore
mysqlDir="$restoreDir/mysql"
scriptDir="$(dirname "$0")"

function readConfig() {
	if [[ -r "${scriptDir}/../config/mysql_backup.cfg" ]]; then
        source "${scriptDir}/../config/mysql_backup.cfg"
	fi
}

function runBackups() {
    local dbname

    readConfig

    if [[ ! -d "/var/backups/mysql" ]]; then
        mkdir -p "/var/backups/mysql" || return 1
    fi
    echo "Clearing out old MySQL backups..."
    rm -f /var/backups/mysql/*

    while read dbname
    do
        case "$dbname" in
            sys)                continue;;
            information_schema) continue;;
            performance_schema) continue;;
        esac

        echo "Backing up database: $dbname"
        mysqldump --complete-insert --routines --triggers --single-transaction "$dbname" > /var/backups/mysql/"$dbname".sql
    done < <(mysql -N -e 'show databases')
}

hook_before() {
	runBackups || exit $?
}

hook_after() {
	rm -rf "$mysqlDir" || exit 1
}

hook_fail() {
	:
}

hook_final() {
	:
}

case "$1" in
    before)     hook_before || exit $? ;;
    after)      hook_after || exit $? ;;
    fail)       hook_fail || exit $? ;;
    finally)    hook_final || exit $? ;;
esac