#!/bin/bash
set -eu
### --help Info: Хук обновления данных контейнера: alembic upgrade, python3 manage.py patch
### --help Usage: /opt/bin/eva_init.sh
### --help Example: /opt/bin/eva_init.sh

source /opt/fox_utils/crab_sys.sh

/opt/bin/eva_init.sh
# eva_init.sh - пока запускает БД для autogen, но это баг.
# /etc/init.d/postgresql start
# /etc/init.d/redis-server start

declare app app_list=eva-app heads
# account app deprecated
# if [[ ${INSTALLATION_TYPE:-box} = box ]]; then
# 	app_list="crm account"
# fi

source /opt/CONFIG
# Патч переименовывания СУБД
# Если БД внешняя - ренейм должен сделать админ
# Т.к. делаем сразу в бранче devel, нам нужно поддерживать rename  в обе стороны
if [ "${POSTGRESQL_ENABLED:-TRUE}" = 'TRUE' ]; then
	cur_db_name='evadb'
	old_db_name='evacrmdb'
	if grep -q 'postgres@/evacrmdb' /opt/eva-app/common/config.py; then
		cur_db_name='evacrmdb'
		old_db_name='evadb'
	fi
	# skip strongbash034
	if ! psql -U postgres -ltq | cut -d \| -f 1 | grep -q "$cur_db_name"; then
		echo "Запускаем переименование СУБД $old_db_name -> $cur_db_name"
		psql -U postgres -ltq
		psql -U postgres -c "ALTER DATABASE ${old_db_name} RENAME TO ${cur_db_name};"
	fi
fi


ret=0
for app in $app_list; do
	echo "Запускаем миграции БД для $app"
	set +e
	(
		set -e
		cd "/opt/$app"
		if [[ -f alembic/heads ]]; then
			heads=$(<alembic/heads)
		else
			echo "!!! Warning /opt/$app/alembic/heads absent in build! Use alembic heads macro." >&2
			heads=heads
		fi
		for head in $heads; do
			alembic upgrade "$head"
		done
		python3 manage.py patch
		python3 manage.py save_version_to_db
	)
	ret=$((ret + $?))
	set -e
done

# Без останова всех процессов lxc-execute не завершается...
/opt/bin/services stop
exit $ret
exit 0
