-# Updates the database by applying migration scripts
-# using sqlalchemy-migrate for this
-# migrate repo is /usr/share/sfa/migrations/
-# and version scripts are thus in /usr/share/sfa/migrations/versions/
-function db_migrate() {
-
- # only if enabled
- [ "$SFA_DB_ENABLED" == 1 ] || return
-
- alchemy_url="postgresql+psycopg2://${SFA_DB_USER}:${SFA_DB_PASSWORD}@:${SFA_DB_PORT}/${SFA_DB_NAME}"
- migrate_repo="/usr/share/sfa/migrations"
- # check if under version control, and initialize it otherwise
- if ! sqlalchemy-migrate db_version --url=$alchemy_url $migrate_repo >& /dev/null ; then
- # at this point it would make sense to
- # check that the 'users' table is in the db
- # if not, backup/dump, and run a nuke/import
- # and then only init the db version to 0
- echo -n $"version init in db ${SFA_DB_NAME}"
- sqlalchemy-migrate version_control --url=$alchemy_url $migrate_repo
- fi
- version_before=$(sqlalchemy-migrate db_version --url=$alchemy_url $migrate_repo)
- check
- sqlalchemy-migrate upgrade --url=$alchemy_url $migrate_repo 2> /dev/null
- check
- version_after=$(sqlalchemy-migrate db_version --url=$alchemy_url $migrate_repo)
- if [ "$version_before" != "$version_after" -o "$ERRORS" != 0 ] ; then
- MESSAGE=$"DB version: $version_before -> $version_after"
- echo -n "$MESSAGE"
- [ "$ERRORS" == 0 ] && success "$MESSAGE" || failure "$MESSAGE" ; echo
- fi
-}
-