#!/bin/bash # Database Setup Script for Export Tests # Creates test database and runs migrations set -e echo "==========================================" echo "Export Tests Database Setup" echo "==========================================" echo "" # Default test database URL TEST_DB_URL="${TEST_DATABASE_URL:-postgresql://postgres:postgres@localhost:5432/dbis_core_test}" echo "📦 Setting up test database..." echo " Database URL: $TEST_DB_URL" echo "" # Extract database name from URL DB_NAME=$(echo $TEST_DB_URL | sed -n 's/.*\/\([^?]*\).*/\1/p') DB_HOST=$(echo $TEST_DB_URL | sed -n 's/.*@\([^:]*\):.*/\1/p') DB_PORT=$(echo $TEST_DB_URL | sed -n 's/.*:\([0-9]*\)\/.*/\1/p') DB_USER=$(echo $TEST_DB_URL | sed -n 's/.*:\/\/\([^:]*\):.*/\1/p') echo " Database: $DB_NAME" echo " Host: $DB_HOST" echo " Port: ${DB_PORT:-5432}" echo " User: $DB_USER" echo "" # Check if database exists echo "🔍 Checking if database exists..." if PGPASSWORD=$(echo $TEST_DB_URL | sed -n 's/.*:\/\/[^:]*:\([^@]*\)@.*/\1/p') psql -h "$DB_HOST" -p "${DB_PORT:-5432}" -U "$DB_USER" -lqt | cut -d \| -f 1 | grep -qw "$DB_NAME"; then echo " ✅ Database '$DB_NAME' already exists" else echo " ⚠️ Database '$DB_NAME' does not exist" echo " 💡 Create it manually: createdb -h $DB_HOST -p ${DB_PORT:-5432} -U $DB_USER $DB_NAME" fi echo "" echo "📋 Running migrations on test database..." export DATABASE_URL="$TEST_DB_URL" npm run migrate echo "" echo "✅ Database setup complete!" echo "" echo "To run export tests:" echo " export TEST_DATABASE_URL='$TEST_DB_URL'" echo " npm test -- tests/unit/exports tests/integration/exports" echo ""