#set -x

Database=$2
Host=$3
User="$4"
PassWD="$5"
BackupFolder="$HOME/Documents/Backups/Databases"
if [ ! -d "$HOME/tmp" ]; then
  mkdir "$HOME/tmp"
fi;

if [ -f "$BackupFolder/CNF/$Database.cnf" ]; then
# echo "Pointing to: \"$BackupFolder/CNF/$Database.cnf\""
  CNF="$BackupFolder/CNF/$Database.cnf"
fi;

# echo "Backing up Database: $Database"

if [ ! -d $BackupFolder ]; then
  mkdir -p "$BackupFolder"
fi;

#if [ -z $4 ]; then
#  User="";
#   PassWD=""
#fi;

hour=`date +%H`;
day=`date +%d`;

case "$1" in
	once)
    if [ ! -d "$BackupFolder" ]; then
      mkdir -p "$BackupFolder"
    fi;
    cd $BackupFolder/
    if [ ! -n "$CNF" ]; then
#     echo "$User/$PassWD on $Host to $Database"
      echo "[client]" > "$HOME/tmp/$Database.cnf"
      if [ -n "$Host" ]; then echo "host = $Host" >> "$HOME/tmp/$Database.cnf"; fi
      if [ -n "$User" ]; then echo "user = $User" >> "$HOME/tmp/$Database.cnf"; fi
      if [ -n "$PassWD" ]; then echo "password = $PassWD" >> "$HOME/tmp/$Database.cnf"; fi
      CNF="$HOME/tmp/$Database.cnf"
#   else
#     echo "Using: \"$CNF\""
    fi;
    /usr/bin/mysqldump --defaults-extra-file="$CNF" --lock-tables=false  -a $Database > "$Database.sql"
    if [ "$?" = "0" ]; then
      tar --remove-files -czf $Database.sql.tar.gz $Database.sql
    else
      if [ -f "$Database.sql" ]; then
        if [ ! -s "$Database.sql" ]; then
          rm -f "$Database.sql"
        fi;
      fi;
    fi;
    if [ $(dirname "$CNF") = "$HOME/tmp" ]; then rm -f "$CNF"; fi
	;;

  hourly)
    increment=$hour
    BackupFolder="$BackupFolder/Hourly"
    if [ ! -d "$BackupFolder" ]; then
      mkdir -p "$BackupFolder"
    fi;
    cd "$BackupFolder"
    if [ ! -n "$CNF" ]; then
#     echo "$User/$PassWD on $Host to $Database"
      echo "[client]" > "$HOME/tmp/$Database.cnf"
      if [ -n "$Host" ]; then echo "host = $Host" >> "$HOME/tmp/$Database.cnf"; fi
      if [ -n "$User" ]; then echo "user = $User" >> "$HOME/tmp/$Database.cnf"; fi
      if [ -n "$PassWD" ]; then echo "password = $PassWD" >> "$HOME/tmp/$Database.cnf"; fi
      CNF="$HOME/tmp/$Database.cnf"
#   else
#     echo "Using: \"$CNF\""
    fi;
    /usr/bin/mysqldump --defaults-extra-file="$CNF" --lock-tables=false  -a $Database > "$Database-hour-$increment.sql"
    if [ "$?" = "0" ]; then
      tar --remove-files -czf $Database-hour-$increment.sql.tar.gz $Database-hour-$increment.sql
    else
      if [ -f "$Database-hour-$increment.sql" ]; then
        if [ ! -s "$Database-hour-$increment.sql" ]; then
          rm -f "$Database-hour-$increment.sql"
        fi;
      fi;
    fi;
    if [ $(dirname "$CNF") = "$HOME/tmp" ]; then rm -f "$CNF"; fi
	;;
  
	daily)
    increment=$day
    BackupFolder="$BackupFolder/Daily"
    if [ ! -d "$BackupFolder" ]; then
      mkdir -p "$BackupFolder"
    fi;
    cd "$BackupFolder"
    if [ ! -n "$CNF" ]; then
#     echo "$User/$PassWD on $Host to $Database"
      echo "[client]" > "$HOME/tmp/$Database.cnf"
      if [ -n "$Host" ]; then echo "host = $Host" >> "$HOME/tmp/$Database.cnf"; fi
      if [ -n "$User" ]; then echo "user = $User" >> "$HOME/tmp/$Database.cnf"; fi
      if [ -n "$PassWD" ]; then echo "password = $PassWD" >> "$HOME/tmp/$Database.cnf"; fi
      CNF="$HOME/tmp/$Database.cnf"
#   else
#     echo "Using: \"$CNF\""
    fi;
    /usr/bin/mysqldump --defaults-extra-file="$CNF" --lock-tables=false  -a $Database > "$Database-day-$increment.sql"
    if [ "$?" = "0" ]; then
      tar --remove-files -czf $Database-day-$increment.sql.tar.gz $Database-day-$increment.sql
    else
      if [ -f "$Database-day-$increment.sql" ]; then
        if [ ! -s "$Database-day-$increment.sql" ]; then
          rm -f "$Database-day-$increment.sql"
        fi;
      fi;
    fi;
    if [ $(dirname "$CNF") = "$HOME/tmp" ]; then rm -f "$CNF"; fi
	;;

	*)
		echo "BackupDB <once | hourly | daily> <Database> [Host] [UserName] [Password]"
    echo "  Password/login info must can be stored in..."
    echo "     $HOME/Documents/Backups/Databases/CNF/<DatabaseName>.cnf"
	;;
esac
