#!/usr/bin/env bash # Create isolated PostgreSQL database for Goose v1.49 local upgrade testing. # Refuses production hosts (103/105/RDS). set -euo pipefail PG_HOST="${GOOSE_V149_PG_HOST:-127.0.0.1}" PG_PORT="${GOOSE_V149_PG_PORT:-5432}" DB_NAME="${GOOSE_V149_SESSION_DB:-goose_sessions_v149_dev}" PG_USER="${GOOSE_V149_PG_USER:-${USER:-john}}" fail() { echo "[goose-v149-db] FAIL: $*" >&2 exit 1 } case "${PG_HOST}" in 127.0.0.1|localhost|::1) ;; 58.38.22.103|120.26.184.105|*rds.aliyuncs.com*|*tkmind.cn*) fail "refusing production or remote host: ${PG_HOST}" ;; *) fail "unexpected PG host (only loopback allowed): ${PG_HOST}" ;; esac export PATH="/opt/homebrew/opt/postgresql@17/bin:${PATH:-/usr/bin:/bin}" if ! pg_isready -h "${PG_HOST}" -p "${PG_PORT}" -q 2>/dev/null; then bash "$(cd "$(dirname "$0")/.." && pwd)/scripts/ensure-goose-session-postgres.sh" fi if psql -h "${PG_HOST}" -p "${PG_PORT}" -U "${PG_USER}" -d postgres -tAc \ "SELECT 1 FROM pg_database WHERE datname='${DB_NAME}'" | grep -q 1; then echo "[goose-v149-db] database already exists: ${DB_NAME}" else createdb -h "${PG_HOST}" -p "${PG_PORT}" -U "${PG_USER}" "${DB_NAME}" echo "[goose-v149-db] created database: ${DB_NAME}" fi echo "[goose-v149-db] GOOSE_SESSION_DB_URL=postgresql://${PG_USER}@${PG_HOST}:${PG_PORT}/${DB_NAME}"