diff --git a/prepare_server.sh b/prepare_server.sh index 1a19e3c2..1cc18705 100755 --- a/prepare_server.sh +++ b/prepare_server.sh @@ -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 diff --git a/prepare_server_cypress.sh b/prepare_server_cypress.sh index f8fb3dd3..b08106f5 100755 --- a/prepare_server_cypress.sh +++ b/prepare_server_cypress.sh @@ -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 "$@"