#!/bin/bash
set -e


# CREATE REPLICATION USER ON MASTER IF NEEDED
if [[ -n $PG_REP_USER && -n $PG_REP_PASSWORD && $PG_MODE = "master" ]]; then
echo "activate master replication"

echo "host replication all 0.0.0.0/0 md5" >> "$PGDATA/pg_hba.conf"

set -e
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
    CREATE USER $PG_REP_USER REPLICATION LOGIN CONNECTION LIMIT 100 ENCRYPTED PASSWORD '$PG_REP_PASSWORD';
EOSQL

cat >> ${PGDATA}/postgresql.conf <<EOF
wal_level = hot_standby
archive_mode = on
archive_command = 'cd .'
max_wal_senders = 8
wal_keep_segments = 8
hot_standby = on
EOF
fi

# CONFIGURE REPLICATION IF NEEDED
if [[ -n $PG_REP_USER && -n $PG_REP_PASSWORD && -n $PG_MASTER_HOST && -n $PG_MASTER_PORT && $PG_MODE = "slave" ]]; then
echo "activate slave"

echo "*:*:*:$PG_REP_USER:$PG_REP_PASSWORD" > ~/.pgpass
chmod 0600 ~/.pgpass

pg_ctl -D ${PGDATA} stop -m fast

rm -Rf ${PGDATA}/*

until PGPASSWORD=$PG_REP_PASSWORD pg_basebackup -h $PG_MASTER_HOST -p $PG_MASTER_PORT -D ${PGDATA} -U ${PG_REP_USER} -vP -R -W
    do
        echo "Waiting for master to connect..."
        sleep 5s
done

echo "host replication all 0.0.0.0/0 md5" >> "$PGDATA/pg_hba.conf"

pg_ctl -D ${PGDATA} start

else

# CREATE KEYCLOAK DB AND USER
psql -v ON_ERROR_STOP=1 -U ${POSTGRES_USER} ${POSTGRES_DB} <<-EOSQL
    CREATE USER ${KEYCLOAK_DB_USER:-keycloak} WITH PASSWORD '${KEYCLOAK_DB_PASSWORD:-keycloak}';
    CREATE DATABASE ${KEYCLOAK_DB:-keycloak};
    GRANT ALL PRIVILEGES ON DATABASE ${KEYCLOAK_DB:-keycloak} TO ${KEYCLOAK_DB_USER:-keycloak};
    ALTER USER ${KEYCLOAK_DB_USER:-keycloak} WITH SUPERUSER;
EOSQL


fi
