Skip to content
Snippets Groups Projects

Draft: Added cmdline args to run-migrations

Closed Marius Kriegerowski requested to merge feature/migrations into master
1 file
+ 31
16
Compare changes
  • Side-by-side
  • Inline
+ 31
16
@@ -20,37 +20,52 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see http://www.gnu.org/licenses/.
set -o errexit
sql_scripts_dir='migrations'
db_name='obm_tiles'
db_user='postgres'
db_hostname='localhost'
# Test for argument from the command line (now only one argument: database user)
if [[ -z ${1+x} ]]; then
# First parameter is the database user
printf 'Running %s with default database user %s\n' "$(basename "$0")" "${db_user}"
else
db_user=${1}
printf 'Running %s with database user %s\n' "$(basename "$0")" "${db_user}"
fi
while getopts d:u:h:p: flag; do
case "${flag}" in
d) db_name=${OPTARG} ;;
u) db_user=${OPTARG} ;;
h) db_hostname=${OPTARG} ;;
p) db_port=${OPTARG} ;;
*) echo "unknown argument ${OPTARG}" ;;
esac
done
# Delete current `obm_tiles` database if exists and create anew
if psql -lqt | cut -d \| -f 1 | grep -qw ${db_name}; then
printf 'Running %s with database user %s on %s table %s \n' "$(basename "$0")" "${db_user}" "${db_hostname}" "${db_name}"
if psql --host "${db_hostname}" \
--port "${db_port}" \
--username "${db_user}" \
-lqt | cut -d \| -f 1 | grep -qw "${db_name}"; then
# Database exists
printf 'Database %s exists, deleting.\n' ${db_name}
dropdb ${db_name}
printf 'Creating %s\n' ${db_name}
createdb ${db_name}
else
createdb ${db_name}
printf 'Database %s exists, deleting.\n' "${db_name}"
dropdb --host "${db_hostname}" \
--port "${db_port}" \
--username "${db_user}" \
"${db_name}"
fi
printf 'Creating %s\n' "${db_name}"
createdb --host "${db_hostname}" \
--port "${db_port}" \
--username "${db_user}" \
"${db_name}"
# Run the SQL scripts in the migrations folder in ascending order
for file in "${sql_scripts_dir}"/*.sql; do
f_base=$(basename "${file}" .sql)
printf 'Running script %s\n' "${f_base}"
psql --username "${db_user}" \
psql -v ON_ERROR_STOP=1 \
--username "${db_user}" \
--dbname "${db_name}" \
--host "${db_hostname}" \
--port "${db_port}" \
--echo-all --file "${file}"
done
Loading