Make use of existing magic env variables for django and psql

This commit is contained in:
Ramon Wenger 2022-11-09 10:54:01 +01:00
parent 5cfce209b6
commit 66ea5f3154
2 changed files with 30 additions and 23 deletions

View File

@ -12,7 +12,7 @@ else echo "CI is set to $CI";
fi
# script should fail when any process returns non zero code
set -ev
set -e
# handle arguments
SKIP_SETUP=false
@ -37,35 +37,42 @@ done
echo "SKIP_SETUP = ${SKIP_SETUP}"
POSTGRES_DB=${POSTGRES_DB:-vbv_lernwelt}
POSTGRES_HOST=${POSTGRES_HOST:-localhost}
POSTGRES_PORT=${POSTGRES_PORT:-5432}
POSTGRES_USER=${POSTGRES_USER:-postgres}
# migrate env vars to the built-in postgres variables
if [ -z ${PGDATABASE+x} ]; then # var is empty
PGDATABASE=${POSTGRES_DB:-vbv_lernwelt};
POSTGRES_DB=$PGDATABASE
fi
if [ -z ${PGHOST+x} ]; then # var is empty
PGHOST=${POSTGRES_DB:-localhost};
fi
if [ -z ${PGPORT+x} ]; then # var is empty
PGPORT=${POSTGRES_PORT:-5432}
fi
if [ -z ${PGUSER+x} ]; then # var is empty
PGUSER=${POSTGRES_USER:-postgres}
fi
DJANGO_PORT=${DJANGO_PORT:-8000}
mypsql() {
psql -h "${POSTGRES_HOST}" -p "${POSTGRES_PORT}" -U "${POSTGRES_USER}" "$@"
}
if [ "$SKIP_SETUP" = false ]; then
# TODO: in heroku we must do a `pg:resets` to reset the db
echo "Check postgres connection"
mypsql -c "SELECT 1"
echo "Drop all connections to $POSTGRES_DB"
mypsql -c "SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = '$POSTGRES_DB' AND pid <> pg_backend_pid();" > /dev/null 2>&1
echo "Drop database: $POSTGRES_DB"
mypsql -c "drop database if exists $POSTGRES_DB;"
echo "Create database: $POSTGRES_DB"
mypsql -c "create database $POSTGRES_DB;"
psql -d postgres -c "SELECT 1" # use default db to connect to
echo "Drop all connections to $PGDATABASE"
psql -c "SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = '$POSTGRES_DB' AND pid <> pg_backend_pid();" > /dev/null 2>&1
echo "Drop database: $PGDATABASE"
psql -d postgres -c "drop database if exists $PGDATABASE;" # use default db to drop another database, can't drop the currently connected database
echo "Create database: $PGDATABASE"
psql -d postgres -c "create database $PGDATABASE;" # use default database, as the set database does not exist currently
echo "initialize database for django"
python3 server/manage.py createcachetable --settings="$DJANGO_SETTINGS_MODULE"
python3 server/manage.py migrate --settings="$DJANGO_SETTINGS_MODULE"
python3 server/manage.py create_default_users --settings="$DJANGO_SETTINGS_MODULE"
python3 server/manage.py create_default_courses --settings="$DJANGO_SETTINGS_MODULE"
python server/manage.py createcachetable
python server/manage.py migrate
python server/manage.py create_default_users
python server/manage.py create_default_courses
# make django translations
(cd server && python3 manage.py compilemessages --settings="$DJANGO_SETTINGS_MODULE")
(cd server && python manage.py compilemessages)
else
# TODO: can we reset important data without resetting the database?
echo "Skip database setup"
@ -73,7 +80,7 @@ else
fi
if [ "$START_BACKGROUND" = true ]; then
cd server && python3 manage.py runserver "${DJANGO_PORT}" --settings="$DJANGO_SETTINGS_MODULE" > /dev/null &
cd server && python manage.py runserver "${DJANGO_PORT}" > /dev/null &
else
cd server && python3 manage.py runserver "${DJANGO_PORT}" --settings="$DJANGO_SETTINGS_MODULE"
cd server && python manage.py runserver "${DJANGO_PORT}"
fi

View File

@ -6,6 +6,6 @@ cd "${0%/*}"
export IT_APP_ENVIRONMENT=development
export DJANGO_SETTINGS_MODULE=config.settings.test_cypress
export DJANGO_PORT=8001
export POSTGRES_DB=vbv_lernwelt_cypress
export PGDATABASE=vbv_lernwelt_cypress
./prepare_server.sh "$@"