#!/bin/sh
set -eu

PROJECT_ROOT=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
API_ROOT="$PROJECT_ROOT/tests/fixtures/api-complete"
YAZA_TEST_CLI=${YAZA_TEST_CLI:-yaza}
if [ -z "${DATABASE_URL:-}" ]; then
    printf '%s\n' 'DATABASE_URL must point to a disposable PostgreSQL database.' >&2
    exit 2
fi

TEMP_DIR=$(mktemp -d "${TMPDIR:-/tmp}/yaza-postgresql-live-smoke.XXXXXX")
cleanup() {
    rm -rf "$TEMP_DIR"
}
trap cleanup EXIT HUP INT TERM

(
    cd "$API_ROOT"
    "$YAZA_TEST_CLI" db migrate
    "$YAZA_TEST_CLI" db migrate
    "$YAZA_TEST_CLI" db status
    "$YAZA_TEST_CLI" db snapshot "$TEMP_DIR/yaza.schema.json"
    "$YAZA_TEST_CLI" db validate-snapshot "$TEMP_DIR/yaza.schema.json"
)

grep -F '"postgres_major_version": "17"' "$TEMP_DIR/yaza.schema.json" >/dev/null || {
    printf '%s\n' 'The live schema snapshot did not record PostgreSQL 17.' >&2
    exit 1
}

(
    cd "$PROJECT_ROOT"
    "$YAZA_TEST_CLI" run tests/pg_transaction_live_smoke.yz
    "$YAZA_TEST_CLI" run tests/db_postgres_live_smoke.yz
)

printf '%s\n' 'Live PostgreSQL migration, snapshot, structured-query, transaction, and savepoint checks passed.'
