#!/bin/sh
#
# shell script to create Bacula database(s)
#
#
#  Bacula® - The Network Backup Solution
#
#  Copyright (C) 2000-2014 Free Software Foundation Europe e.V.
#
#  The main author of Bacula is Kern Sibbald, with contributions from many
#  others, a complete list can be found in the file AUTHORS.
#
#  You may use this file and others of this release according to the
#  license defined in the LICENSE file, which includes the Affero General
#  Public License, v3.0 ("AGPLv3") and some additional permissions and
#  terms pursuant to its AGPLv3 Section 7.
#
#  Bacula® is a registered trademark of Kern Sibbald.
#

PATH="/usr/local/bin:$PATH"
db_name=${db_name:-bacula}

#
# use SQL_ASCII to be able to put any filename into
#  the database even those created with unusual character sets

PSQLVERSION=`psql -d template1 -c 'select version()' $* | awk '/PostgreSQL/ {print $2}' | cut -d '.' -f 1,2`

#
# Note, LC_COLLATE and LC_TYPE are needed on 8.4 and beyond, but are
#   not implemented in 8.3 or below.
# This must be updated for future versions of PostgreSQL
#
case ${PSQLVERSION} in
   9.*)
	ENCODING="ENCODING 'SQL_ASCII' LC_COLLATE 'C' LC_CTYPE 'C'"
   ;;
   8.[456789])
	ENCODING="ENCODING 'SQL_ASCII' LC_COLLATE 'C' LC_CTYPE 'C'"
    ;;
    *)
	ENCODING="ENCODING 'SQL_ASCII'"
    ;;
esac



#
# Please note: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#  We do not recommend that you use ENCODING 'SQL_UTF8'
#  It can result in creating filenames in the database that
#  cannot be seen or restored.
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#
#
if psql -f - -d template1 $* <<END-OF-DATA
\set ON_ERROR_STOP on
CREATE DATABASE ${db_name} $ENCODING TEMPLATE template0;
ALTER DATABASE ${db_name} SET datestyle TO 'ISO, YMD';
END-OF-DATA
then
   echo "Creation of ${db_name} database succeeded."
else
   echo " "
   echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
   echo "!!!! Creation of ${db_name} database failed. !!!!"
   echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
fi
if psql -l ${dbname} $* | grep " ${db_name}.*SQL_ASCII" >/dev/null; then 
   echo "Database encoding OK"
else
   echo " "
   echo "Database encoding bad. Do not use this database"
   echo " "
fi
