I just have a very small idea, maybe I can get a feedback about it here.
What if db will store not only migration name but also migration itself, so the system can rollback the migration even if migration file is no-longer exists.
Cases when it can be useful:
when I switch between branched in my git-repo I want to roll-back migrations that were removed and apply new migrations.
When I change migration itself, I want to roll-back its previous version and apply a new changed version.
Let me know what you think about it, I hope it is a right place to share ideas like that.