db/scripts/diff.sh
Orion Kindel ee6390d723
Some checks failed
migrate-stage / migrate-stage (push) Has been cancelled
gen-migrations / gen-migrations (push) Successful in 15s
migrate-devel / migrate-devel (push) Failing after 5s
fix: migrate and gen_migrations should work
2023-07-20 12:48:07 -05:00

45 lines
1.0 KiB
Bash
Executable File

#! /bin/bash
set -xe
source ./scripts/env.sh ./.env.schema
base="$1"
head_arg="$2"
head=$(git show --format=format:%h -q | xargs)
if [[ -n "$head_arg" ]]; then
head="$head_arg"
fi;
migration="./migrations/${base}_to_${head}.sql"
db() {
echo -n "postgresql+pg8000:///dnim?port=$1&user=$POSTGRES_USER&password=$POSTGRES_PASSWORD"
}
if [[ -z "$base" ]] || [[ -z "$head" ]]; then
echo "revisions to diff are required ex. ./scripts/diff.sh abc bcd" 1>&2;
exit 1;
fi
set +e
schema_changed=$(git diff --quiet "$base" "$head" -- ./schema)
schema_changed_exit=$?
set -e
if [[ "$schema_changed_exit" = "0" ]]; then
echo ""
exit 0;
fi;
if [[ ! -f "$migration" ]]; then
./scripts/build.sh base "$base" 1>&2 || (echo "base failed to build" && exit 1)
./scripts/build.sh head "$head" 1>&2 || (echo "head failed to build" && exit 1)
until pg_isready --quiet -p 5432 && pg_isready --quiet -p 5433; do true; done;
migra --unsafe "$(db 5432)" "$(db 5433)" || echo "migra exited with code $?. this is /probably/ fine" 1>&2
else
cat "$migration"
fi