Files
komp_ac/server/scripts/reset_test_db.sh
2025-09-13 08:53:26 +02:00

40 lines
1.4 KiB
Bash
Executable File

#!/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."