Open bevzzz opened 11 months ago
I had to update a lot of to the existing unit tests (~5-7 files) because I noticed that many of them weren't properly cleaning up the database, causing side-effects in the auto-migrate tests.
All of those changes come in a single commit and I could open a different PR for them to be merged separately.
UPD: opened #927 for this specific change. Should make it easier to review the current one once the other changes are merged.
This PR is my second attempt at implementing #456 :)
This time around I decided to start with the functionality we want to bring (
AutoMigrator
), design a good interface and work from there.I took into account our discussions of the ALTER TABLE functionality from #726 and let each dialect export a simple
RenameTable(context.Context, string, string)
function to be used byAutoMigrator
's internals. My thinking was that, if auto migration is done well, the users wouldn't need to work with ALTER TABLE all that much.❕
AutoMigrator.Migrate()
is just a sketch -- running it will do the migration and record it in the db, but the users won't be able to revert it because no migration file (.sql or .go) is generated at the moment.AutoMigrator.Run()
should be used to run the migrations "in-place".There might be other improvements to make here (e.g. add more unit test cases) but I thought I'd put it out here sooner to get the feedback.
What is still to do:
type:
)Other:
test.sh
to pass additional arguments togo test
(for example, now possible to run 1 test with./test.sh -run=TestAutoMigrator_Run
)