#!/usr/bin/env bash

set -ex

substitute_values() {
    cat << EOF > ./valuesForSubstitution.json
{
"<DATA_PARTITION_ID>": "${DATA_PARTITION_ID}",
"<PARTITION_POSTGRESQL_DB_NAME>": "${PARTITION_POSTGRESQL_DB_NAME}",
"<PARTITION_POSTGRESQL_USERNAME>": "${PARTITION_POSTGRESQL_USERNAME}",
"<PARTITION_POSTGRESQL_PASSWORD>": "${PARTITION_POSTGRESQL_PASSWORD}"
}
EOF

    # shellcheck disable=SC2207
    KEYS=( $(jq -r 'keys_unsorted[]' ./valuesForSubstitution.json) )
    # shellcheck disable=SC2207
    VALUES=( $(jq -r 'values[]' ./valuesForSubstitution.json) )

    for i in "${!KEYS[@]}"; do
    find ./ -type f -exec sed -i -e "s/${KEYS[$i]}/${VALUES[$i]}/g" {} \;
    done

}

execute_sql_scripts() {
    export PGPASSWORD=${POSTGRESQL_PASSWORD}

    psql -h "${POSTGRESQL_HOST}" -U "${POSTGRESQL_USERNAME}" -p "${POSTGRESQL_PORT}" -f "./bootstrap.sql"
}

# General connection variables
source ./validate-env.sh "DATA_PARTITION_ID"

# Service users and passwords
source ./validate-env.sh "PARTITION_POSTGRESQL_DB_NAME"
source ./validate-env.sh "PARTITION_POSTGRESQL_USERNAME"
source ./validate-env.sh "PARTITION_POSTGRESQL_PASSWORD"
source ./validate-env.sh "POSTGRESQL_HOST"
source ./validate-env.sh "POSTGRESQL_PORT"
source ./validate-env.sh "POSTGRESQL_USERNAME"
source ./validate-env.sh "POSTGRESQL_PASSWORD"
source ./validate-env.sh "POSTGRESQL_DATABASE"
substitute_values
execute_sql_scripts
touch /tmp/bootstrap_ready
# sleeping if success
sleep 365d