Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature request: Repeatable migrations for managing functions and views #238

Open
2 of 6 tasks
rohanliston opened this issue Feb 25, 2025 · 1 comment
Open
2 of 6 tasks

Comments

@rohanliston
Copy link

Feature description

Flyway has the concept of repeatable migrations that are (re-)applied to a database on migrate every time their checksum changes.

This differs from the 'current' migration concept in Graphile Migrate, which as far as I understand is purely for development purposes.

Repeatable migrations are very useful for managing database objects whose definition can then simply be maintained in a single file in version control. They are typically used for

* (Re-)creating views/procedures/functions/packages/...
*  Bulk reference data reinserts

Implementing #209 would probably make this possible with hooks, but I have found it such a useful concept that I think it warrants consideration as a feature.

Motivating example

I've used this Flyway feature on many projects to manage stored procedures and functions and am really missing it now that I am using Graphile Migrate.

I've tried replicating the functionality with the afterCurrent and afterAllMigrations hooks, but:

  • In watch mode, I have to go and make a dummy edit to current.sql in order to pick up the changes to my "repeatable" migrations.
  • In migrate mode, the "repeatable" migrations don't run at all because the migrations have all been applied already.

Supporting development

I [tick all that apply]:

(I'd love to implement this myself but realistically don't think I would have time, but am happy to assist otherwise).

  • am interested in building this feature myself
  • am interested in collaborating on building this feature
  • 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)
  • am a Graphile sponsor ❤️
  • have an active support or consultancy contract with Graphile
@rohanliston rohanliston changed the title Repeatable migrations for managing functions and views Feature request: Repeatable migrations for managing functions and views Feb 25, 2025
@benjie
Copy link
Member

benjie commented Feb 25, 2025

We have the beginnings of this already in the form of fixtures - you would manage your views/procedures/RLS policies/GRANTs/etc in fixtures, and then --!include them from current.sql. What we lack currently is monitoring to know that these files have changed - currently it relies on you knowing that when you change a fixture you must also add it to the current migration via --!include.

https://github.com/graphile/migrate#including-external-files-in-the-current-migration

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants