#!/bin/bash

#note set for each minor version
dosis_db_version=1.8.2

cd $(dirname ${0})

source ./setfunctions

TRUE=1
FALSE=0
while getopts ":nl" opt; do
	case ${opt} in
		n)
			NOCONFIRM=${TRUE}
		;;
		l)
			LOADINVENTORY=${TRUE}
		;;
		*)	
	esac
done

shift $(( $OPTIND-1 ))

if [[ ${1} == "loadInventory" ]]; then
	LOADINVENTORY=${TRUE}
fi

# give option 1 will bypass the check
if [[ ${NOCONFIRM} -ne ${TRUE} ]]; then
	echo "Confirm rebuild database yes/no"
	read ANSWER 
          case $ANSWER in
		[Yy][Ee][Ss] | [Yy] )
			echo "Database Rebuild Confirmed"
		;;
		*)
			echo "Database Rebuild Canceled"
			exit 1
		;;
          esac
fi

# define exit function
exit_timeout() {
  echo "Close all session before running this script."
  # timeout exit
  exit
}

# Handler for signal USR1 for the timer
trap exit_timeout SIGUSR1

# record own PID
export PID=$$

TIMEOUT=1
(sleep ${TIMEOUT} ; kill -SIGUSR1 $PID) &

# record PID of timer
TPID=$!

##################################
# Delete any existing database
##################################
echo "Dropping database ${database}..."
dropdb -U ${owner} ${database}

# NOTE: check for return status does not work
# here if database is in use or missing return status
# in both case equal to 0

#################################
# Kill timer pid if dropdb returns
#################################
kill ${TPID}

##################################
# Create the Dosis database
##################################
echo "Creating database ${database}..."
createdb -O ${owner} -U ${owner} ${database}

RESULT=${?}
if [[ ${RESULT} -ne 0 ]]; then
	exit ${RESULT}
fi

##################################
# Create the procedural language
##################################
echo "Adding procedural language"
# Must be superuser to add lanugague, so use postgres
${psql} -U postgres --quiet ${database} < language.sql

##################################
# Create the domains and user types
##################################
echo "-------------Inputting dosisDomains.sql-----------------"
${psql} ${psqlargs} ${database} < dosisDomains.sql

##################################
# Create the functions
##################################
echo "-------------Inputting dosisFunctions.sql-----------------"
${psql} ${psqlargs} ${database} < dosisFunctions.sql

##################################
# Create the table structure
##################################
echo "-------------Inputting dosisSchema.sql-----------------"
${psql} ${psqlargs} ${database} < dosisSchema.sql

##################################
# Create the views
##################################
echo "-------------Inputting dosisViews.sql-----------------"
${psql} ${psqlargs} ${database} < dosisViews.sql

##################################
# Create the index
##################################
echo "-------------Inputting dosisIndex.sql-----------------"
${psql} ${psqlargs} ${database} < dosisIndex.sql


##################################
# Add default data
##################################
echo "-------------Adding Default Data-----------------"
${psql} ${psqlargs} ${database} < default.sql
echo "Inputting Drug Names"
${psql} ${psqlargs} ${database} < drug_names.sql
echo "Inputting Drug Strengths"
${psql} ${psqlargs} ${database} < strengths.sql
echo "Inputting unitData.sql"
${psql} ${psqlargs} ${database} < unitData.sql
echo "Inputting manufactureData.sql"
${psql} ${psqlargs} ${database} < manufactureData.sql
#echo "Inputting warning labels"
#${psql} ${psqlargs} ${database} < architext.sql
echo "Inputting training instructions"
${psql} ${psqlargs} ${database} < training.sql

##################################
# Add error codes
##################################
echo "Inputting populateDosisErrors.sql"
${psql} ${psqlargs} ${database} < populateDosisErrors.sql

########################################
# Update permissions on tables
########################################

setPermissions manchac
setPermissions dafe_get

${psql} ${psqlargs} -c "update settings set value = '$dosis_db_version' where id = 'db_version'"

###################################
echo "Setting Dosis Version and OS Version in settings table"

ver=$(rpm -q --qf "%{VERSION}\n" Dosis)
psql -d dosis -U dosis -c "UPDATE settings SET value = '$ver' WHERE id = 'dosisSoftwareVersion';"
osver=$(cat /etc/redhat-release)
kernelver=$(uname -r)
psql -d dosis -U dosis -c "UPDATE settings SET value = '$osver $kernelver' WHERE id = 'dosisSystemVersion';"


echo "Enter serial number:"
read dosisSerial

${psql} ${psqlargs} -c "update settings set value = '$dosisSerial' where id = 'dosisSerialNum'"

echo "Enter customer number:"
read dosisCust

${psql} ${psqlargs} -c "update settings set value = '$dosisCust' where id = 'custNumber'"
