apply-db-optimizations.sh•4.03 kB
#!/bin/bash
# Script to help apply database optimizations to Supabase
set -e
echo "═══════════════════════════════════════════════════════════════"
echo " 📊 Database Optimization Guide - Supabase"
echo "═══════════════════════════════════════════════════════════════"
echo ""
echo "This script will help you apply database optimizations."
echo ""
echo "⚙️ What will be optimized:"
echo " - 10+ composite indexes for common query patterns"
echo " - Full-text search indexes (Swedish language)"
echo " - Materialized views for financial summaries"
echo " - Database constraints for data integrity"
echo ""
echo "📈 Expected improvements:"
echo " - Search queries: 500ms → 50ms (10x faster)"
echo " - Filtered queries: 2s → 200ms (10x faster)"
echo " - Storage: +150 MB (+4.7%)"
echo ""
echo "⏱️ Estimated time: 5-10 minutes"
echo ""
echo "═══════════════════════════════════════════════════════════════"
echo ""
# Check if SQL file exists
if [ ! -f "sql/004-optimize-indexes.sql" ]; then
echo "❌ Error: sql/004-optimize-indexes.sql not found"
exit 1
fi
echo "✅ SQL file found: sql/004-optimize-indexes.sql"
echo ""
echo "📋 Steps to apply optimizations:"
echo ""
echo "1️⃣ Open Supabase SQL Editor:"
echo " https://supabase.com/dashboard/project/thjwryuhtwlfxwduyqqd/sql"
echo ""
echo "2️⃣ Copy the SQL file to clipboard (choose one):"
echo ""
echo " Option A - Copy to clipboard (macOS):"
echo " $ pbcopy < sql/004-optimize-indexes.sql"
echo ""
echo " Option B - Display in terminal:"
echo " $ cat sql/004-optimize-indexes.sql"
echo ""
echo "3️⃣ In Supabase SQL Editor:"
echo " - Click 'New Query'"
echo " - Paste the SQL code"
echo " - Click 'Run' (or Ctrl+Enter)"
echo ""
echo "4️⃣ Wait for completion (~5-10 minutes)"
echo " You'll see progress messages like:"
echo " - 'CREATE INDEX'"
echo " - 'ALTER TABLE'"
echo " - '✅ Optimization complete!'"
echo ""
echo "5️⃣ Verify optimizations:"
echo " $ npm run db:verify-optimizations"
echo ""
echo "═══════════════════════════════════════════════════════════════"
echo ""
# Ask if user wants to copy to clipboard
read -p "🤔 Do you want to copy the SQL to clipboard now? (y/n) " -n 1 -r
echo ""
if [[ $REPLY =~ ^[Yy]$ ]]; then
if command -v pbcopy &> /dev/null; then
pbcopy < sql/004-optimize-indexes.sql
echo "✅ SQL copied to clipboard!"
echo " Now paste it in Supabase SQL Editor"
echo ""
echo " Opening Supabase SQL Editor in browser..."
sleep 2
open "https://supabase.com/dashboard/project/thjwryuhtwlfxwduyqqd/sql" 2>/dev/null || echo " (Please open URL manually)"
else
echo "⚠️ pbcopy not available (not on macOS?)"
echo " Displaying SQL file instead:"
echo ""
cat sql/004-optimize-indexes.sql
fi
else
echo ""
echo "💡 When you're ready, run:"
echo " $ pbcopy < sql/004-optimize-indexes.sql"
echo ""
echo " Then paste in: https://supabase.com/dashboard/project/thjwryuhtwlfxwduyqqd/sql"
fi
echo ""
echo "═══════════════════════════════════════════════════════════════"
echo "📚 More info: docs/DEPLOYMENT-GUIDE.md (Section: Database Optimizations)"
echo "═══════════════════════════════════════════════════════════════"