98 lines
2.7 KiB
Bash
Executable File
98 lines
2.7 KiB
Bash
Executable File
#!/bin/bash
|
|
# PostgreSQL Migration Quick Start Script
|
|
# Run this to set up PostgreSQL migration
|
|
|
|
set -e
|
|
|
|
echo "🚀 Discord Bot - PostgreSQL Migration Setup"
|
|
echo "==========================================="
|
|
echo ""
|
|
|
|
# Check if PostgreSQL is installed
|
|
if ! command -v psql &> /dev/null; then
|
|
echo "❌ PostgreSQL is not installed. Please install PostgreSQL first."
|
|
echo " macOS: brew install postgresql"
|
|
echo " Ubuntu: sudo apt-get install postgresql postgresql-contrib"
|
|
echo " Windows: Download from https://www.postgresql.org/download/windows/"
|
|
exit 1
|
|
fi
|
|
|
|
echo "✅ PostgreSQL found"
|
|
echo ""
|
|
|
|
# Check if Node.js is installed
|
|
if ! command -v node &> /dev/null; then
|
|
echo "❌ Node.js is not installed."
|
|
exit 1
|
|
fi
|
|
|
|
echo "✅ Node.js found"
|
|
echo ""
|
|
|
|
# Create .env if it doesn't exist
|
|
if [ ! -f .env ]; then
|
|
echo "📝 Creating .env file..."
|
|
cp .env.example .env
|
|
echo "⚠️ Please update .env with your PostgreSQL connection string"
|
|
echo " DATABASE_URL=postgresql://user:password@localhost:5432/discord_bot"
|
|
echo ""
|
|
fi
|
|
|
|
# Install dependencies
|
|
echo "📦 Installing dependencies..."
|
|
pnpm add pg pg-pool node-pg-migrate
|
|
pnpm add -D @types/pg @types/node-pg-migrate
|
|
pnpm remove better-sqlite3 @types/better-sqlite3 2>/dev/null || true
|
|
|
|
echo "✅ Dependencies installed"
|
|
echo ""
|
|
|
|
# Create database
|
|
read -p "Enter PostgreSQL username (default: postgres): " PG_USER
|
|
PG_USER=${PG_USER:-postgres}
|
|
|
|
read -p "Enter PostgreSQL password: " -s PG_PASSWORD
|
|
echo ""
|
|
|
|
read -p "Enter database name (default: discord_bot): " DB_NAME
|
|
DB_NAME=${DB_NAME:-discord_bot}
|
|
|
|
read -p "Enter PostgreSQL host (default: localhost): " PG_HOST
|
|
PG_HOST=${PG_HOST:-localhost}
|
|
|
|
read -p "Enter PostgreSQL port (default: 5432): " PG_PORT
|
|
PG_PORT=${PG_PORT:-5432}
|
|
|
|
echo ""
|
|
echo "🗄️ Creating database..."
|
|
|
|
PGPASSWORD=$PG_PASSWORD psql -h $PG_HOST -U $PG_USER -p $PG_PORT -tc "SELECT 1 FROM pg_database WHERE datname = '$DB_NAME'" | grep -q 1 || \
|
|
PGPASSWORD=$PG_PASSWORD psql -h $PG_HOST -U $PG_USER -p $PG_PORT -c "CREATE DATABASE $DB_NAME"
|
|
|
|
echo "✅ Database created"
|
|
echo ""
|
|
|
|
# Update .env with connection string
|
|
DATABASE_URL="postgresql://$PG_USER:$PG_PASSWORD@$PG_HOST:$PG_PORT/$DB_NAME"
|
|
sed -i.bak "s|DATABASE_URL=.*|DATABASE_URL=$DATABASE_URL|" .env
|
|
rm -f .env.bak
|
|
|
|
echo "✅ .env updated with DATABASE_URL"
|
|
echo ""
|
|
|
|
# Run migrations
|
|
echo "🔄 Running migrations..."
|
|
npx node-pg-migrate up
|
|
|
|
echo "✅ Migrations completed"
|
|
echo ""
|
|
|
|
echo "🎉 PostgreSQL migration setup complete!"
|
|
echo ""
|
|
echo "Next steps:"
|
|
echo "1. Review the migration files in src/db/migrations/"
|
|
echo "2. Update imports in your code (see POSTGRES_IMPLEMENTATION.md)"
|
|
echo "3. Run: pnpm run typecheck"
|
|
echo "4. Run: pnpm run dev"
|
|
echo ""
|