#!/bin/bash

#shellcheck disable=SC1091
source /usr/bin/xivo-upgrade-functions

CUSTOM_ENV_FILE="/etc/docker/compose/custom.env"
PGXIVOCC_CONTAINER="xivocc-pgxivocc-1"

wait_for_pgxivocc() {
    until docker exec "${PGXIVOCC_CONTAINER}" pg_isready -q; do
        sleep 1
    done
}

is_mmuser_created() {
    [ "$(docker exec "${PGXIVOCC_CONTAINER}" psql -U postgres -qtAc "SELECT 1 FROM pg_roles WHERE rolname = 'mmuser'")" = "1" ]
}

is_mattermost_local() {
    docker ps -a --format '{{.Names}}' | grep -q mattermost
}

get_declared_mattermost_app_hosts() {
    grep -oP '^\s*MM_APP_HOSTS\s*=\s*\K.*' "${CUSTOM_ENV_FILE}" | tail -n 1
}

display_undeclared_mattermost_app_hosts_warning() {
	cat <<-EOF
	************************************************************************
	*  WARNING: the chat application server cannot reach its database      *
	*  on this XiVO CC until its IP address is declared.                   *
	*  Add it to MM_APP_HOSTS (comma-separated) in                         *
	*  ${CUSTOM_ENV_FILE}, then run: xivocc-dcomp reload pgxivocc
	************************************************************************
	EOF
}

warn_if_mattermost_app_hosts_are_undeclared() {
    wait_for_pgxivocc
    if is_mmuser_created && ! is_mattermost_local && [ -z "$(get_declared_mattermost_app_hosts)" ]; then
        display_undeclared_mattermost_app_hosts_warning
    fi
}

check_used_postgres "xivocc"
if [[ "$USE_DB" == true ]]; then
    warn_if_mattermost_app_hosts_are_undeclared
fi
