#!/bin/bash -ue

source $OPENSHIFT_CARTRIDGE_SDK_BASH

case "$1" in
  -v|--version)
    version="$2"
esac

echo "Installing postgres"

env_dir="${OPENSHIFT_POSTGRESQL_DIR}/env"

echo 'Generating username and password'

username=$(generate_username)
# Force the username to be all lowercase so it works properly with psql
username=$(echo "${username}" | tr '[:upper:]' '[:lower:]')
password=$(generate_password)

set_env_var 'OPENSHIFT_POSTGRESQL_DB_USERNAME' $username $env_dir
set_env_var 'PGUSER' $username $env_dir
set_env_var 'OPENSHIFT_POSTGRESQL_DB_PASSWORD' $password $env_dir

# TODO: This should be able to be in an erb file, but they're not sourced in the correct order
set_env_var 'OPENSHIFT_POSTGRESQL_DB_URL' "postgresql://${username}:${password}@${OPENSHIFT_POSTGRESQL_DB_HOST}:${OPENSHIFT_POSTGRESQL_DB_PORT}" $env_dir

# Create postgresql database
# The contained tar file is the results of "initdb -D data", but much, much faster.
tar -zxf $OPENSHIFT_POSTGRESQL_DIR/conf/pgdata-template.tar.gz -C "${OPENSHIFT_POSTGRESQL_DIR}/data/"
chmod 0700 $OPENSHIFT_POSTGRESQL_DIR/data
chmod 0700 $OPENSHIFT_POSTGRESQL_DB_SOCKET

# These conf files need to override the values in the data directory AFTER it's been extracted by setup
#  This needs to be done here because the ERB processing happens after setup
conf_dir="${OPENSHIFT_POSTGRESQL_DIR}/conf"
cp $conf_dir/*.conf $OPENSHIFT_POSTGRESQL_DIR/data/

cp $conf_dir/psqlrc $HOME/.psqlrc
echo "*:*:*:${username}:${password}" > $HOME/.pgpass
chmod 0600 $HOME/.pgpass

conn_url='postgresql://$OPENSHIFT_POSTGRESQL_DB_HOST:$OPENSHIFT_POSTGRESQL_DB_PORT'

client_result ""
client_result "PostgreSQL ${version} database added.  Please make note of these credentials:"
client_result ""
client_result "   Root User: ${username}"
client_result "   Root Password: ${password}"
client_result "   Database Name: ${OPENSHIFT_APP_NAME}"
client_result ""
client_result "Connection URL: ${conn_url}"
client_result ""

cart_props "connection_url=${conn_url}"
cart_props "username=${username}"
cart_props "password=${password}"
cart_props "database_name=${OPENSHIFT_APP_NAME}"

set_app_info "Connection URL: ${conn_url}"
