#! /bin/bash set -e source ./scripts/common.sh source ./scripts/env.sh ./.env.schema base_or_head="$1" rev="$2" if [[ -n "$base_or_head" ]]; then docker compose kill "$base_or_head" docker compose rm -vf "$base_or_head" fi if [[ "$base_or_head" = "base" ]]; then port=5432 else port=5433 fi db() { echo -n "postgresql:///$1?port=$port&user=$POSTGRES_USER&password=$POSTGRES_PASSWORD" } initdb() { dropdb=$(mktemp) echo "drop database dnim with (force);" > "$dropdb" psql --quiet $(db postgres) -f "$dropdb" || true psql --quiet $(db postgres) -c "create database dnim" } if [[ "$rev" = "empty" ]]; then docker compose up --wait --wait-timeout 30 -d "$base_or_head" initdb exit 0 fi if [[ -n "$rev" ]]; then git worktree remove --force "./$base_or_head" &>/dev/null || true rm -rf "./$base_or_head" &>/dev/null || true git worktree add "./$base_or_head" --detach "$rev" &>/dev/null cp docker-compose.yml "./$base_or_head/docker-compose.yml" cp .env.schema "./$base_or_head/.env.schema" cd "./$base_or_head" fi docker compose up --wait --wait-timeout 30 -d "${base_or_head:-head}" initdb ls ./schema/ | xargs -I{} bash -c "set -e; $(declare -f query_file); query_file \"$(db dnim)\" ./schema/{}" query_file $(db dnim) ./migrations/ensure_seeded.sql