#!/bin/bash
#
# sp_dbpurge
#
# (c) 2012 SUSE Linux GmbH, Germany.
# GNU Public License. No warranty.
#
# Version: 2012-03-15
#

EXE="$0"

SM_CFG="/etc/rhn/rhn.conf"

DB_ADM="oracle"
DB_SID="susemanager"
DB_HOME="/opt/apps/oracle/oradata/"
DB_SID="susemanager"
DB_TMPSQL="/tmp/dbsetup.sql"
LOG="/tmp/$(basename $0).log"


function help() {
	echo "usage: $0 [OPTION]"
	echo
	echo "purge SUSE Manager database."
	echo
	echo " -g	guess parameters"
	echo " -c	clear tables"
	echo " -r	remove instance"
	echo " -v	show version"
	echo " -h	show help"
	echo
}


function guess_db() {
	DB_USER=$(awk '$1=="db_user" {print $3}' $SM_CFG)
	DB_PASS=$(awk '$1=="db_password" {print $3}' $SM_CFG)
	DB_SID=$(awk '$1=="db_name" {print $3}' $SM_CFG)
	id $DB_ADM >/dev/null || DB_ADM=""
	DB_HOME=$(awk -F":" '$1=="'${DB_ADM}'" {print $6}' /etc/passwd)
	echo "DB_ADM: $DB_ADM"
	echo "DB_HOME: $DB_HOME"
	echo "DB_USER: $DB_USER"
	echo "DB_PASS: $DB_PASS"
	echo "DB_SID: $DB_SID"
}


function ask_yesno() {
	read -p "Continue [yes/no]? " -a YN
	YN=$(echo $YN | tr "YES" "yes")
	test $YN = "yes" -o $YN = "y" || exit 3
}


function ask_cleanup() {
	echo "Need some parameters."
	echo -n "DB_ADM: "; read DB_ADM
	echo -n "DB_SYSPWD: "; read DB_SYSPWD
	echo -n "DB_USER: "; read DB_USER
	echo -n "DB_PASS: "; read DB_PASS
	# TODO DB_SID, DB_HOME s. below
	# echo -n "DB_HOME: "; read DB_HOME
	# echo -n "DB_SID: "; read DB_SID
	echo "DB_SID: $DB_SID"
	echo "DB_HOME: $DB_HOME"
	echo
	ask_yesno
}


function cleanup_xe() {
	echo "Removing XE database. Please wait..."
	# TODO:
}


function cleanup_db() {
	echo "Removing database. Please wait..."
	/opt/apps/oracle/setup "$DB_SYSPWD"
	# TODO: $DB_HOME/$DB_SID/data_01.dbf instead of '/opt/apps/oracle/oradata/susemanager/data_01.dbf'

# TODO: cleanup DB
#	echo "
#/
#quit
#" >$DB_TMPSQL

	su -s /bin/bash - $DB_ADM -c "ORACLE_SID=$DB_SID sqlplus / as sysdba @$DB_TMPSQL;"
	rm $DB_TMPSQL
}


# main()
case "$1" in
	-g|--guess)
		guess_db
	;;
	-c|--clear)
		ask_cleanup
		# TODO DB_HOME
		DB_HOME=$(awk -F":" '$1=="'${DB_ADM}'" {print $6}' /etc/passwd)
		if [ $DB_HOME = "/usr/lib/oracle/xe" ]; then
			cleanup_xe
		else
			cleanup_db
		fi
	;;
	-r|--remove)
		# TODO:
	;;
	-v|--version)
		echo -n "$(basename $EXE) "
		head -11 $EXE | grep "^# Version: "
	;;
	*)
        	help
	;;
esac
#
