#!/bin/bash


PGROOT=""
PGFILE=pg_hba.conf
PGHOST=127.0.156.1

while [ $# -gt 0 ] ; do
  case $1 in
           --rcmd) PGRELOAD=$2; shift 2;;
         --pgfile) PGFILE=$2; shift 2;;
         --pgroot) PGROOT=$2; shift 2;;
         --pghost) PGHOST=$2; shift 2;;
    --projectroot) PROJECTROOT=$2; shift 2;;
      --pgversion) pgversion=$2; PGROOT=/etc/postgresql/$pgversion/main; shift 2;;
      --dataroot)  DATAROOT=$2; shift 2;;
 
                *)  shift 1;;
  esac
done

cd `dirname $0`

lang=`echo $LANG | cut -f1 -d_`
echo "Sprache $LANG - $lang" 1>&2

if [ ! "$lang" = "de" ]; then
    lang=en
fi

get_data()
{
   echo "$1" | sed -e "s@par1@$2@" -e "s@par2@$3@" -e "s@par3@$4@" | psql --tuples-only --no-align -h $PGHOST -E sbsdb
}

mv $PROJECTROOT/sbs/db/dbcfg $PROJECTROOT/sbs/db/dbcfg.old 2>&1 >/dev/null

psql -h $PGHOST --set ON_ERROR_STOP=on << EOF 2>&1
CREATE ROLE admindb;
ALTER ROLE admindb LOGIN
  PASSWORD 'NtiAdmindb'
  SUPERUSER INHERIT CREATEDB CREATEROLE;
EOF

if [ $? != 0 ]; then
    echo 'user admindb allready exists - ignored' 1>&2;
fi

psql -h $PGHOST << EOF  2>&1
    DROP DATABASE sbsdborig;
    CREATE DATABASE sbsdborig
       WITH OWNER = admindb
       TEMPLATE = template0
       ENCODING = 'UTF8'
       TABLESPACE = pg_default
       LC_COLLATE = 'C'
       LC_CTYPE = 'C'
       CONNECTION LIMIT = -1;
EOF

psql -h $PGHOST sbsdborig << EOF 2>&1
       CREATE PROCEDURAL LANGUAGE plpgsql;
       ALTER PROCEDURAL LANGUAGE plpgsql OWNER TO postgres;
       CREATE EXTENSION pgcrypto;
       
EOF

psql -h $PGHOST < db/global.sql 2>&1
psql -h $PGHOST sbsdborig < db/sbs.sql 2>&1
  
psql -h $PGHOST --set ON_ERROR_STOP=on << EOF 2>&1
CREATE DATABASE sbsdb
  WITH OWNER = admindb
       TEMPLATE = template0
       ENCODING = 'UTF8'
       TABLESPACE = pg_default
       LC_COLLATE = 'C'
       LC_CTYPE = 'C'
       CONNECTION LIMIT = -1;
EOF

if [ $? != 0 ]; then
    echo 'Try to update database sbsdb' 1>&2;

    psql -h $PGHOST sbsdb < db/drop_pre.sql 2>&1
    ( cd $PROJECTROOT/sbs/db; export PGPASSWORD='no password'; ./dbupdate --noask ) 1>&2

    psql -h $PGHOST sbsdb < db/drop_post.sql 2>&1
else
    psql -h $PGHOST sbsdb << EOF 2>&1
       CREATE PROCEDURAL LANGUAGE plpgsql;
       ALTER PROCEDURAL LANGUAGE plpgsql OWNER TO postgres;
       CREATE EXTENSION pgcrypto;
EOF
    psql -h $PGHOST sbsdb < db/sbs.sql
fi