#!/usr/bin/env bash

function prepare_centos() {
if [[ ! -s /etc/os-release ]]; then
cat <<-'EOF' > /etc/yum.repos.d/CentOS-Base.repo
[C6.10-base]
name=CentOS-6.10 - Base
baseurl=http://vault.centos.org/6.10/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
enabled=1
metadata_expire=never

[C6.10-updates]
name=CentOS-6.10 - Updates
baseurl=http://vault.centos.org/6.10/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
enabled=1
metadata_expire=never

[C6.10-extras]
name=CentOS-6.10 - Extras
baseurl=http://vault.centos.org/6.10/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
enabled=1
metadata_expire=never

[C6.10-contrib]
name=CentOS-6.10 - Contrib
baseurl=http://vault.centos.org/6.10/contrib/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
enabled=0
metadata_expire=never

[C6.10-centosplus]
name=CentOS-6.10 - CentOSPlus
baseurl=http://vault.centos.org/6.10/centosplus/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
enabled=0
metadata_expire=never
EOF
fi

echo "Updating YUM repo cache"
yum makecache -q || yum makecache -q || yum makecache
} # centos

function pg_11_on_centos_6()
{
  prepare_centos
  yum install -y -q https://download.postgresql.org/pub/repos/yum/reporpms/EL-6-x86_64/pgdg-redhat-repo-latest.noarch.rpm
  yum install -y -q postgresql11 postgresql11-server sudo 

  service postgresql-11 initdb
  service postgresql-11 start
  # chkconfig postgresql-11 on

  # allow access using login/password to to local apps only
  echo '
local  all  all                ident
host   all  all  127.0.0.1/32  md5
host   all  all  ::1/128       md5
' | sudo tee /var/lib/pgsql/11/data/pg_hba.conf

  sudo service postgresql-11 restart
  sudo -u postgres psql -q -t -c "Select Version();"

  sudo -u postgres psql -c "CREATE ROLE admin WITH SUPERUSER LOGIN PASSWORD 'pass';"
  PGPASSWORD=pass psql -t -h localhost -p 5432 -U admin -q -c "select version();" -d postgres >pg-ver.txt 2>&1
  Say "VER: $(cat pg-ver.txt)"
  
  # create empty DB w3top and postgres user w3top with access to w3top DB only.
  commands=( \
    "drop database if exists w3top;" \
    "drop user if exists w3top;" \
    "create database w3top;" \
    "create user w3top;" \
    "ALTER USER w3top WITH PASSWORD 'pass';" \
    "grant all on DATABASE w3top to w3top;" \
  )
  for sql in "${commands[@]}"; do
    pushd /tmp >/dev/null
    echo "Exec sql [$sql]"
    sudo -u postgres psql -q -t -c "$sql"
    popd >/dev/null
  done

  Say "Grant w3top user for new w3top db completed"

  # check permissions to w3top DB for w3top user
  PGPASSWORD=pass psql -t -h localhost -p 5432 -U w3top -q -c "select 'Hello, ' || current_user;" -d w3top
  echo 'export PGSQL_DATABASE="Host=localhost;Port=5432;Database=w3top;Username=w3top;Password=pass;Timeout=15;Pooling=false;"' > ~/w3top.env
}