This directory contains an automated solution for local Supabase development that resolves migration ordering issues by using a production-based consolidated migration.
# Recommended: Use the automated consolidated migration
npm run supabase:migrate:consolidated
# Or run the automation script directly
node supabase/migrations-local/setup-local.mjs --consolidatedThe automation provides a clean solution to GitHub issue #503 (migration ordering problems) by:
- Temporary File Management: Moves all existing migrations to
.tempdirectory - Consolidated Migration: Applies a single, production-based migration that creates the complete schema
- Automatic Restoration: Restores all original migration files after completion
- Clean State: No temporary files left behind
setup-local.mjs: Cross-platform automation script with file management001_production_based_consolidated.sql: Production-based consolidated migration (700+ lines)README.md: This documentation
supabase/migrations/ → supabase/migrations.temp/ (temporary move)
↓
supabase/migrations/ ← 001_production_based_consolidated.sql (copy)
↓
supabase db reset (apply consolidated migration)
↓
supabase/migrations/ ← supabase/migrations.temp/ (restore all files)
The consolidated migration creates:
- 8 Core Tables: repositories, contributors, pull_requests, issues, reviews, comments, commits, rate_limit_tracking
- 27 Indexes: Optimized for performance
- Vector Extensions: Embeddings support (if available)
- Auth Integration: Compatible with Supabase auth
- RLS Policies: Row Level Security enabled
- Local Development: Uses this consolidated approach to avoid dependency issues
- Production: Uses the standard sequential migrations in
supabase/migrations/ - Source of Truth: The consolidated migration is based on bdougie's production schema export
The automation includes robust error handling:
- Signal Interruption: Proper cleanup on Ctrl+C
- Process Termination: Automatic restoration on errors
- File Lock Protection: Prevents concurrent runs
- Rollback Safety: Original migrations always restored
Seeding Errors: Expected behavior - the consolidated schema doesn't include all tables that seed.sql references
failed to send batch: ERROR: relation "monthly_rankings" does not exist
Solution: This is normal - the core schema migration succeeded, only seeding failed
Migration Count Changes: The script adapts automatically to new migrations being added
📦 Temporarily moving 68 existing migrations...
Docker/CLI Issues: Ensure prerequisites are met
# Check Docker
docker info
# Check Supabase CLI
npx supabase --version
# Check Supabase status
npx supabase statusIf the automation is interrupted and files aren't restored:
# Check for temp directory
ls supabase/migrations.temp/
# Manual restore if needed
rm -rf supabase/migrations/
mv supabase/migrations.temp/ supabase/migrations/- Cross-Platform: Works on Windows (PowerShell), macOS, and Linux
- CLI Detection: Automatically detects Supabase CLI installation method
- Process Tracking: Uses PID-based ownership for safe concurrent operations
- Exit Codes: Proper exit codes for CI/CD integration