60 lines
1.5 KiB
Bash
60 lines
1.5 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
# ========================================
|
|
# MIGRATION RESET UTILITY SCRIPT
|
|
# ========================================
|
|
|
|
log() {
|
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*"
|
|
}
|
|
|
|
log "🔄 Migration Reset Utility"
|
|
log "This script will reset migration state to allow re-running migrations"
|
|
|
|
# Check if DATABASE_URL is set
|
|
if [ -z "${DATABASE_URL:-}" ]; then
|
|
log "ERROR: DATABASE_URL environment variable is required"
|
|
exit 1
|
|
fi
|
|
|
|
# Get confirmation from user
|
|
echo ""
|
|
echo "⚠️ WARNING: This will:"
|
|
echo " - Clear the schema_migrations table"
|
|
echo " - Remove the migration completion marker"
|
|
echo " - Allow migrations to run again on next docker compose up"
|
|
echo ""
|
|
echo " This will NOT delete your actual data tables."
|
|
echo ""
|
|
read -p "Are you sure you want to proceed? (y/N): " -n 1 -r
|
|
echo
|
|
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|
log "Operation cancelled"
|
|
exit 0
|
|
fi
|
|
|
|
log "🗑️ Clearing migration state..."
|
|
|
|
# Connect to database and clear migration tracking
|
|
psql "${DATABASE_URL}" -c "
|
|
DROP TABLE IF EXISTS schema_migrations;
|
|
SELECT 'Migration tracking table dropped' as status;
|
|
" || {
|
|
log "ERROR: Failed to clear database migration state"
|
|
exit 1
|
|
}
|
|
|
|
# Remove migration marker file
|
|
MIGRATION_MARKER="/tmp/migrations-completed"
|
|
if [ -f "${MIGRATION_MARKER}" ]; then
|
|
rm -f "${MIGRATION_MARKER}"
|
|
log "📝 Removed migration completion marker"
|
|
else
|
|
log "📝 Migration completion marker not found (already clean)"
|
|
fi
|
|
|
|
log "✅ Migration state reset complete!"
|
|
log "💡 Next 'docker compose up' will re-run all migrations"
|