Allow force running of --once if current.sql has not changed
zacherkkila opened this issue · 2 comments
Feature description
Often we use tricks like select n
and increment the number or change current.sql
in another way to get it to run.
It would be handy to have a flag to force run --once
if the file hasn't changed.
Motivating example
When testing a data migration, it is often very handy to have an idempotent migration that can get run multiple times as you add/change data in your application.
Typical workflow for me in a data migration involves
- Keep the original data I am moving in place (if possible)
- Run the migration, check for base functionality, compare against existing
- Add more data to test the migration and run it again (rinse and repeat as needed)
- Once tested, add code to cleanup the original data, test again, and ship
Though workarounds are simple as described in the feature description, I think it would be a nice add.
Breaking changes
n/a
Supporting development
I [tick all that apply]:
- am interested in building this feature myself
- am interested in collaborating on building this feature
- [ x ] am willing to help testing this feature before it's released
- am willing to write a test-driven test suite for this feature (before it exists)
- [ x ] am a Graphile sponsor ❤️
- [ x ] have an active support or consultancy contract with Graphile
I think essentially we just want to disable this code:
Lines 86 to 91 in bb2f8f9
Which is useful to disable in both watch
and watch --once
modes.
Maybe --always-different
(-a
) or --no-ignore-unchanged
or --no-require-changes
or similar might make sense? --force
(-f
) also makes sense, but it's a bit less specific and limits our future options, perhaps. A --force-when-unchanged
flag that --force
automatically enables might make sense... but we'd need some more forces (--force-actions
) first.
@jemgillam suggests --force-migration
which I think is pretty apt - you're forcing the migration to happen even if no changes occurred.