2022-10-12 14:22:22 +00:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
function error_handler() {
|
|
|
|
>&2 echo "Exited with BAD EXIT CODE '${2}' in ${0} script at line: ${1}."
|
|
|
|
exit "$2"
|
|
|
|
}
|
|
|
|
trap 'error_handler ${LINENO} $?' ERR
|
|
|
|
set -o errtrace -o errexit -o nounset -o pipefail
|
|
|
|
|
|
|
|
export FLASK_SESSION_SECRET_KEY="this_is_recreate_db_secret_key"
|
|
|
|
|
2023-02-15 22:07:12 +00:00
|
|
|
if [[ -z "${SPIFFWORKFLOW_BACKEND_BPMN_SPEC_ABSOLUTE_DIR:-}" ]]; then
|
2022-10-27 19:33:59 +00:00
|
|
|
script_dir="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
|
|
|
|
|
2023-02-15 22:07:12 +00:00
|
|
|
SPIFFWORKFLOW_BACKEND_BPMN_SPEC_ABSOLUTE_DIR="${script_dir}/../../../sample-process-models"
|
|
|
|
if [[ ! -d "$SPIFFWORKFLOW_BACKEND_BPMN_SPEC_ABSOLUTE_DIR" ]]; then
|
|
|
|
SPIFFWORKFLOW_BACKEND_BPMN_SPEC_ABSOLUTE_DIR="${script_dir}/../../sample-process-models"
|
|
|
|
if [[ ! -d "$SPIFFWORKFLOW_BACKEND_BPMN_SPEC_ABSOLUTE_DIR" ]]; then
|
|
|
|
>&2 echo "ERROR: Could not find a location for the sample processes. Last tried: $SPIFFWORKFLOW_BACKEND_BPMN_SPEC_ABSOLUTE_DIR"
|
2022-10-27 19:33:59 +00:00
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
fi
|
2023-02-15 22:07:12 +00:00
|
|
|
export SPIFFWORKFLOW_BACKEND_BPMN_SPEC_ABSOLUTE_DIR
|
2022-10-27 19:33:59 +00:00
|
|
|
fi
|
|
|
|
|
2022-10-12 14:22:22 +00:00
|
|
|
tasks=""
|
|
|
|
if [[ "${1:-}" == "clean" ]]; then
|
|
|
|
subcommand="${2:-}"
|
|
|
|
if [[ "$subcommand" == "rmall" ]]; then
|
|
|
|
tasks="$tasks init migrate"
|
|
|
|
rm -rf migrations/
|
|
|
|
elif [[ -n "$subcommand" ]]; then
|
|
|
|
>&2 echo "ERROR: you passed a subcommand that was not rmall, and that is not supported: $subcommand"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2023-02-27 22:19:03 +00:00
|
|
|
if [[ "${SPIFFWORKFLOW_BACKEND_DATABASE_TYPE:-mysql}" != "mysql" ]]; then
|
|
|
|
rm -f ./src/instance/*.sqlite3
|
|
|
|
else
|
|
|
|
mysql -uroot -e "DROP DATABASE IF EXISTS spiffworkflow_backend_local_development"
|
|
|
|
mysql -uroot -e "DROP DATABASE IF EXISTS spiffworkflow_backend_unit_testing"
|
|
|
|
fi
|
2022-10-12 14:22:22 +00:00
|
|
|
|
|
|
|
# TODO: check to see if the db already exists and we can connect to it. also actually clean it up.
|
|
|
|
# start postgres in background with one db
|
2023-02-16 12:59:51 +00:00
|
|
|
if [[ "${SPIFFWORKFLOW_BACKEND_DATABASE_TYPE:-}" == "postgres" ]]; then
|
2023-02-24 21:57:53 +00:00
|
|
|
if ! docker exec -it postgres-spiff psql -U spiffworkflow_backend spiffworkflow_backend_unit_testing -c "select 1"; then
|
|
|
|
docker run --name postgres-spiff -p 5432:5432 -e POSTGRES_PASSWORD=spiffworkflow_backend -e POSTGRES_USER=spiffworkflow_backend -e POSTGRES_DB=spiffworkflow_backend_unit_testing -d postgres
|
2022-10-12 14:22:22 +00:00
|
|
|
sleep 4 # classy
|
|
|
|
fi
|
2023-02-07 20:02:47 +00:00
|
|
|
if ! docker exec -it postgres-spiff psql -U spiffworkflow_backend spiffworkflow_backend_local_development -c "select 1"; then
|
2023-02-24 21:57:53 +00:00
|
|
|
# create other db. spiffworkflow_backend_unit_testing came with the docker run.
|
|
|
|
docker exec -it postgres-spiff psql -U spiffworkflow_backend spiffworkflow_backend_unit_testing -c "create database spiffworkflow_backend_local_development;"
|
2022-10-12 14:22:22 +00:00
|
|
|
fi
|
|
|
|
fi
|
2023-03-01 20:54:50 +00:00
|
|
|
tasks="$tasks upgrade"
|
2023-02-08 17:43:30 +00:00
|
|
|
elif [[ "${1:-}" == "migrate" ]]; then
|
2023-03-01 21:28:42 +00:00
|
|
|
tasks="$tasks migrate upgrade"
|
2023-03-01 20:54:50 +00:00
|
|
|
elif [[ "${1:-}" == "downgrade" ]]; then
|
|
|
|
tasks="$tasks downgrade"
|
|
|
|
else
|
|
|
|
tasks="$tasks upgrade"
|
2022-10-12 14:22:22 +00:00
|
|
|
fi
|
|
|
|
|
2023-02-27 22:19:03 +00:00
|
|
|
if [[ "${SPIFFWORKFLOW_BACKEND_DATABASE_TYPE:-mysql}" == "mysql" ]]; then
|
|
|
|
mysql -uroot -e "CREATE DATABASE IF NOT EXISTS spiffworkflow_backend_local_development"
|
|
|
|
mysql -uroot -e "CREATE DATABASE IF NOT EXISTS spiffworkflow_backend_unit_testing"
|
|
|
|
fi
|
2022-10-12 14:22:22 +00:00
|
|
|
|
|
|
|
for task in $tasks; do
|
2023-02-07 20:02:47 +00:00
|
|
|
SPIFFWORKFLOW_BACKEND_ENV=local_development FLASK_APP=src/spiffworkflow_backend poetry run flask db "$task"
|
2022-10-12 14:22:22 +00:00
|
|
|
done
|
|
|
|
|
2023-02-07 20:02:47 +00:00
|
|
|
SPIFFWORKFLOW_BACKEND_ENV=unit_testing FLASK_APP=src/spiffworkflow_backend poetry run flask db upgrade
|
|
|
|
if [[ -n "${SPIFFWORKFLOW_BACKEND_ENV:-}" ]] && ! grep -Eq '^(local_development|unit_testing)$' <<< "$SPIFFWORKFLOW_BACKEND_ENV"; then
|
2023-02-27 22:19:03 +00:00
|
|
|
if [[ "${SPIFFWORKFLOW_BACKEND_DATABASE_TYPE:-mysql}" == "mysql" ]]; then
|
|
|
|
mysql -uroot -e "CREATE DATABASE IF NOT EXISTS spiffworkflow_backend_$SPIFFWORKFLOW_BACKEND_ENV"
|
|
|
|
fi
|
2022-12-24 04:39:48 +00:00
|
|
|
FLASK_APP=src/spiffworkflow_backend poetry run flask db upgrade
|
|
|
|
fi
|