#!/bin/sh
#
# BAREOS® - Backup Archiving REcovery Open Sourced
#
# Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
# Copyright (C) 2013-2020 Bareos GmbH & Co. KG
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of version three of the GNU Affero General Public
# License as published by the Free Software Foundation and included
# in the file LICENSE.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
#
# This routine drops the appropriately configured
# Bareos tables for PostgreSQL, Ingres, MySQL, or SQLite.
#

#
# Source the Bareos config functions.
#

# change to root dir
cd /


. /usr/pkg/lib/bareos/scripts/bareos-config-lib.sh

db_name="${db_name:-`get_database_name bareos`}"
db_user="${db_user:-`get_database_user bareos`}"
db_version=`get_database_version`
bareos_sql_ddl=`get_database_ddl_dir`
temp_sql_schema="/tmp/drops.sql.$$"
default_db_type=`get_database_driver_default`
working_dir=`get_working_dir`

#
# See if the first argument is a valid backend name.
# If so the user overrides the default database backend.
#
if [ $# -gt 0 ]; then
   case $1 in
      sqlite3)
         db_type=$1
         shift
         ;;
      mysql)
         db_type=$1
         shift
         ;;
      postgresql)
         db_type=$1
         shift
         ;;
      *)
         ;;
   esac
fi

#
# If no new db_type is gives use the default db_type.
#
if [ -z "${db_type}" ]; then
   db_type="${default_db_type}"
fi

echo "Dropping ${db_type} tables"

case ${db_type} in
   sqlite3)
      ;;
   mysql)
      sql_definitions="${bareos_sql_ddl}/drops/mysql.sql"
      ;;
   postgresql)
      sql_definitions="${bareos_sql_ddl}/drops/postgresql.sql"
      ;;
   *)
      echo "Unknown database type $1"
      exit 1
      ;;
esac

if [ ! -z "${sql_definitions}" ]; then
   if [ ! -f ${sql_definitions} ]; then
      echo "Unable to open database table definitions in file ${sql_definitions}"
      exit 1
   fi

   get_translated_sql_file ${sql_definitions} > ${temp_sql_schema}
   if [ $? != 0 ]; then
        echo "Failed to translate SQL definitions in ${sql_definitions}"
        exit 1
   fi
fi

bindir=`get_database_utility_path ${db_type}`
if [ ! -z "${bindir}" ]; then
   PATH="$bindir:$PATH"
fi

case ${db_type} in
   sqlite3)
      rm -f ${working_dir}/${db_name}.db
      retval=0
      ;;
   mysql)
      mysql $* --database=${db_name} -f < ${temp_sql_schema}

      retval=$?
      if test $retval = 0; then
         echo "Dropping of Bareos MySQL tables succeeded."
      else
         echo "Dropping of Bareos MySQL tables failed."
      fi
      ;;
   postgresql)
      PGOPTIONS='--client-min-messages=warning' psql -f ${temp_sql_schema} -d ${db_name} $*

      retval=$?
      if test $retval = 0; then
         echo "Dropping of Bareos PostgreSQL tables succeeded."
      else
         echo "Dropping of Bareos PostgreSQL tables failed."
      fi
      ;;
esac

rm -f ${temp_sql_schema}

exit ${retval}
