#!/bin/bash

# get -u parameter from user input
function usage {
  echo "Usage: $0 [-u <user>]" 1>&2;
  exit 1;
}

while getopts "u:" o; do
  case "${o}" in
    u)
      USERNAME=${OPTARG};
      ;;
    *)
      usage;
      ;;
  esac
done

shift $((OPTIND - 1))

# if -u not provided, abort and alert user
if [ -z ${USERNAME} ]; then
  usage
fi

# define script vars
BACKUP_FOLDER="/vagrant/webservice/mysql_tmp"
BACKUP_FOLDER_SERVER="/var/tmp/db_backup"
CURRENT_DAY=`date +%y%m%d`
DB_NAME="portal"
FILENAME="${DB_NAME}-${CURRENT_DAY}*.zip"
OLDFILENAME="${DB_NAME}-*.zip"

# create backup folder if doesn't exist
if [ ! -d "${BACKUP_FOLDER}" ]; then
  mkdir -p ${BACKUP_FOLDER}
fi

# move to backup folder
cd ${BACKUP_FOLDER}

# check if database not downloaded yet
if [ ! -f ${FILENAME} ]; then
  NUMFILESFOUND=0
else
  NUMFILESFOUND=`ls -l ${FILENAME} | wc -l`
fi

if [ ${NUMFILESFOUND} -eq 0 ]; then
  NUMFILESFOUND=`ls -l ${OLDFILENAME} | wc -l`

  if [ ${NUMFILESFOUND} -gt 0 ]; then
    FILENAMEFOUND=`ls -r ${OLDFILENAME} | head -1`

    # FILENAMEFOUNDDATE=`echo $FILENAMEFOUND | cut -d'_' -f4`
    no_colour=$'\e[0m'
    green=$'\e[32m'
    read -p $"Existe um arquivo antigo (${green}${FILENAMEFOUND}${no_colour}). Deseja usá-lo? [y/N] " -n 1 -r
    echo # move to a new line

    if [[ ${REPLY} =~ ^[YySs]$ ]]; then
      # use old file
      FILENAME=${FILENAMEFOUND};
    else
      echo "Baixando arquivo..."

      scp ${USERNAME}@150.164.180.61:${BACKUP_FOLDER_SERVER}/${FILENAME} .
    fi
  else
    echo "Baixando arquivo..."

    scp ${USERNAME}@150.164.180.61:/var/tmp/db_backup/${FILENAME} .
  fi
else
  # get already downloaded filename
  FILENAMEFOUND=`ls -rt ${FILENAME} | head -1`
  FILENAME=${FILENAMEFOUND}

  echo "Arquivo já baixado."
fi

echo "Usando o arquivo ${FILENAME}..."
# update db on mysql
echo "Drop Database ${DB_NAME}..."

mysqladmin --login-path=development drop ${DB_NAME} --force

# check if database still exists (not dropped)
mysqlshow --login-path=development ${DB_NAME} | grep -v Wildcard | grep -o ${DB_NAME}

if [ $? -eq 0 ]; then
  echo "Database ${DB_NAME} was not dropped. Aborting..."
  exit 1;
fi

echo "Create new db..."
mysqladmin --login-path=development create ${DB_NAME} --force

if [ $? -ne 0 ]; then
  echo "Couldn't create database ${DB_NAME}. Aborting..."
  exit 1;
fi

echo "Carregando o arquivo ${FILENAME} para o MySQL..."

unzip -p ${FILENAME} | mysql --login-path=development ${DB_NAME}

echo "Pronto!"
