Add a "compact" command
- Dominant language
- TypeScript
- Stars
- 835
- Forks
- 64
- Avg merge
- 17m
- Merged PRs (30d)
- 5
Description
### Feature description
Add a command,
```
graphile-migrate compact
```
which compresses all of the migrations in `committed/` to one migration. I think this can be accomplished by running all the committed migrations on the shadow database and then dumping the output via `pg_dump -c`, where `-c` is the "clean" flag that includes statements to drop objects.
### Motivating example
Over time, you can accumulate a large number of committed migrations. This is mostly a non-issue, but when it has become an issue is when I'm redefining a function for the more than 2nd time.
I'll search my code for `CREATE OR REPLACE FUNCTION my_func_name` to find the latest definition, and occasionally I'll find an older version to redefine and accidentally re-introduce a change incidental to my intended change.
Checking a dump mostly solves this, but it would be nice not to encounter it in the first place and to keep the committed migrations clean.
I'm also curious to see if other people have potential uses for this - not 100% committed to it being necessary / good.
### Supporting development
I [tick all that apply]:
- [x] am interested in building this feature myself
- [x] am interested in collaborating on building this feature
- [x] am willing to help testing this feature before it's released
- [x] am willing to write a test-driven test suite for this feature (before it exists)
- [ ] am a [Graphile sponsor](https://www.graphile.org/sponsor/) ❤️
- [ ] have an active [support or consultancy contract](https://www.graphile.org/support/) with Graphile
Contributor guide
Assessment
This issue has not been assessed yet.