#!/bin/bash

BACKUPDIR="${1}"
TARGETDIR="/var/lib/influxdb"
DATABASES=$(<"${BACKUPDIR}/user/databases")

print_usage() {
  echo -e "Usage: ${0} backupdir"
  echo -e "\n    Full InfluxDB offline restore."
  echo -e "\nOptions:\n"
  echo "    backupdir"
  echo "        Backup directory"
}

if [ "$#" -lt 1 ] || [ "$#" -gt 1 ]; then
  print_usage
  exit 1
fi

echo "This will restore InfluxDB:"
echo "from:  ${BACKUPDIR}"
echo "to:    ${TARGETDIR}"
echo

read -p "Are you absolutely sure? [y/N]" -n 1 -r
if [[ $REPLY =~ ^[Yy]$ ]]
then
  echo
  echo "restore database meta..."
  
  /usr/bin/influxd restore -metadir "${TARGETDIR}/meta" "${BACKUPDIR}/meta"
  
  for DB in ${DATABASES};
  do
    echo "restore database ${DB}..."
    /usr/bin/influxd restore -db "${DB}" -newdb "${DB}" -datadir "${TARGETDIR}/data" "${BACKUPDIR}/data/${DB}"
  done
  
  chown -R influxdb:influxdb "${TARGETDIR}"/*
else
  echo
  echo "aborted."
fi
