Downstream applications need one safe way to apply goose migrations and to test them.
Current state: each application copies the same goose runner into its core and every plugin. Nothing holds a lock while migrations run, so a command run in a pod can migrate while a new pod starts. Each application writes its own test database migrator with a fixed address. Since pgx 5.11.0 a bare @ in a URL password stops the server.
Proposal: a pgkit module with a goose runner, a migration lock on a session advisory lock, a URL check that asks for %40, and a pgtestdb migrator whose address comes from a setting. The pgx floor stays at v5.10.0.
Trigger: the command line module needs a lock around its migrations.
Downstream applications need one safe way to apply goose migrations and to test them.
Current state: each application copies the same goose runner into its core and every plugin. Nothing holds a lock while migrations run, so a command run in a pod can migrate while a new pod starts. Each application writes its own test database migrator with a fixed address. Since pgx 5.11.0 a bare @ in a URL password stops the server.
Proposal: a pgkit module with a goose runner, a migration lock on a session advisory lock, a URL check that asks for %40, and a pgtestdb migrator whose address comes from a setting. The pgx floor stays at v5.10.0.
Trigger: the command line module needs a lock around its migrations.