#!/bin/bash

##
# Reflects database models to the postgres database if this script is run for
# the first time and runs the app in a Gunicorn server, optimized for a 4-core
# system. (4 cores * 2 + 1)
#
# Gunicorn documentation: https://docs.gunicorn.org/en/latest/index.html
# Flask documentation, more options and information: https://flask.palletsprojects.com/en/2.0.x/patterns/appfactories/
##

# https://www.geeksforgeeks.org/bash-scripting-how-to-check-if-file-exists/

# Check if this script has already been run. If not, reflect database models
# and save that information for next time by creating an ``already_run.lock``
# file.
if [ ! -f already_run.lock ];
then
	FLASK_APP=measurer python -m flask reflect &&
	touch already_run.lock
fi

# https://stackoverflow.com/a/13864829
# Thanks to Lionel and BSMP!

# If unset, do ``INFO`` by default
if [[ -z "${LOGGING_LEVEL+set}" ]]; then
	export LOGGING_LEVEL="INFO";
fi

# Run the Gunicorn server in another
python -m gunicorn -w 9 -b :5009 measurer:"create_app()" &

# https://docs.docker.com/config/containers/multi-service_container/

wait -n

# Exit with status of process that exited first
exit $?