← back to Watches
scripts/migrate.sh
65 lines
#!/bin/bash
# Database Migration Script
# Applies PostgreSQL schema for Omega Watch Platform
set -e
# Load environment variables
if [ -f .env ]; then
export $(cat .env | grep -v '^#' | xargs)
fi
DB_HOST="${DB_HOST:-localhost}"
DB_PORT="${DB_PORT:-5432}"
DB_NAME="${DB_NAME:-omega_watches}"
DB_USER="${DB_USER:-postgres}"
echo "=== Omega Watch Platform - Database Migration ==="
echo "Host: $DB_HOST:$DB_PORT"
echo "Database: $DB_NAME"
echo "User: $DB_USER"
echo ""
# Check if PostgreSQL is available
if ! command -v psql &> /dev/null; then
echo "Error: psql not found. Please install PostgreSQL client."
exit 1
fi
# Test connection
echo "Testing database connection..."
PGPASSWORD=$DB_PASSWORD psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d postgres -c '\q' 2>/dev/null
if [ $? -ne 0 ]; then
echo "Error: Cannot connect to PostgreSQL"
exit 1
fi
echo "Connection successful!"
# Create database if not exists
echo ""
echo "Creating database if not exists..."
PGPASSWORD=$DB_PASSWORD psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d postgres -c "CREATE DATABASE $DB_NAME;" 2>/dev/null || echo "Database already exists"
# Run main schema
echo ""
echo "Running main schema..."
PGPASSWORD=$DB_PASSWORD psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME -f database/schema.sql
# Run user authentication schema
echo ""
echo "Running user authentication schema..."
PGPASSWORD=$DB_PASSWORD psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME -f database/migrations/001-users.sql
# Verify tables
echo ""
echo "Verifying tables..."
PGPASSWORD=$DB_PASSWORD psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME -c "
SELECT table_name FROM information_schema.tables
WHERE table_schema = 'public'
ORDER BY table_name;
"
echo ""
echo "=== Migration Complete ==="
echo "Tables created successfully!"