42 lines
1.4 KiB
Bash
Executable File
42 lines
1.4 KiB
Bash
Executable File
#! /bin/bash
|
|
|
|
set -xe
|
|
|
|
source ./scripts/env.sh ./.env
|
|
|
|
if [[ -n $(git status --porcelain) ]]; then
|
|
echo "git working tree dirty" 1>&2;
|
|
exit 1;
|
|
fi
|
|
|
|
head=$(git show --format=format:%h -q)
|
|
|
|
get_dnim_database_count="copy (select count(*) from pg_database where datname = 'dnim') to stdout with null as '';"
|
|
dnim_database_count=$(psql "$POSTGRES_URI/postgres" -c "$get_dnim_database_count")
|
|
|
|
if [[ "$dnim_database_count" = "0" ]]; then
|
|
echo "fresh database"
|
|
psql "$POSTGRES_URI/postgres" -c "create database dnim;"
|
|
ls ./schema/ | xargs -I{} psql --quiet "$POSTGRES_URI/dnim" --file=./schema/{} 1>/dev/null
|
|
last_revision='empty'
|
|
script=''
|
|
else
|
|
get_last_revision="copy (select to_revision from migration order by performed_on desc limit 1) to stdout with null as '';"
|
|
last_revision=$(psql "$POSTGRES_URI/dnim" -c "$get_last_revision")
|
|
script=$(./scripts/diff.sh "$last_revision")
|
|
|
|
if [[ "$1" = "--greenlight" ]]; then
|
|
psql "$POSTGRES_URI/dnim" -c "$script"
|
|
else
|
|
to_review="tmp/migrate_${last_revision}_to_${head}.sql"
|
|
echo "$script" > "$to_review"
|
|
echo "script written to $to_review"
|
|
echo "review and rerun with --greenlight to apply migration"
|
|
exit
|
|
fi
|
|
fi
|
|
|
|
insert_migration="insert into migration (from_revision, to_revision, script) values ('$last_revision', '$head', \$migration\$$script\$migration\$);"
|
|
psql "$POSTGRES_URI/dnim" -c "$insert_migration"
|
|
echo "inserted migration"
|