#!/bin/bash # scripts/reset_test_db.sh # Load environment variables from .env_test if it exists if [ -f .env_test ]; then export $(grep -v '^#' .env_test | xargs) fi DATABASE_URL=${TEST_DATABASE_URL:-"postgres://multi_psql_dev:3@localhost:5432/multi_rust_test"} echo "Resetting test DB at $DATABASE_URL" # Check if database exists and who owns it DB_NAME=$(echo "$DATABASE_URL" | sed 's|.*/||') DB_HOST=$(echo "$DATABASE_URL" | sed 's|.*@||' | sed 's|:.*||') DB_PORT=$(echo "$DATABASE_URL" | sed 's|.*:||' | sed 's|/.*||') DB_USER=$(echo "$DATABASE_URL" | sed 's|.*://||' | sed 's|:.*||') # Check database owner (optional info) DB_OWNER=$(psql "$DATABASE_URL" -t -c "SELECT pg_catalog.pg_get_userbyid(d.datdba) FROM pg_catalog.pg_database d WHERE d.datname = '$DB_NAME';" 2>/dev/null | xargs) if [ ! -z "$DB_OWNER" ]; then echo "Database owner: $DB_OWNER" fi # Force drop database without confirmation echo "Dropping database..." sqlx database drop --database-url "$DATABASE_URL" --yes 2>/dev/null || { # Fallback: use psql to force drop psql "postgres://$DB_USER@$DB_HOST:$DB_PORT/postgres" -c "DROP DATABASE IF EXISTS \"$DB_NAME\";" 2>/dev/null || true } # Create database echo "Creating database..." sqlx database create --database-url "$DATABASE_URL" # Apply migrations echo "Applying migrations..." sqlx migrate run --database-url "$DATABASE_URL" echo "✅ Test database reset and migrated."