graphile/migrate

Feature request: `compile` and `run` should be able to `--!include` fixtures

Opened this issue · 2 comments

Summary

I set up a current.sql like this:

--!include schemas/private.sql
--!include schemas/public.sql
--!include functions/uid.sql
--!include tables/accounts.sql
--!include types/jwt_token.sql
--!include functions/authenticate.sql

I then tried running graphile-migrate compile and graphile-migrate run against it but the fixtures do not appear to be substituted in:

$ graphile-migrate --config src/db/.gmrc compile  src/db/migrations/current.sql
--!include schemas/private.sql
--!include schemas/public.sql
--!include functions/uid.sql
--!include tables/accounts.sql
--!include types/jwt_token.sql
--!include functions/authenticate.sql
$ graphile-migrate --config src/db/.gmrc run  src/db/migrations/current.sql
┌───┐
│   │
├───┤
└───┘

The fixtures are substituted in correctly when running graphile-migrate --config src/db/.gmrc commit

Steps to reproduce

See above

Expected results

The fixtures should be substituted in when using compile and run

Actual results

The fixtures are not substituted in when using compile and run

Additional context

OS: dockerized mcr.microsoft.com/devcontainers/base:bookworm running on ubuntu 20.0.4
graphile-migrate: 2.0.0-rc.2
bun: 1.1.13

Possible Solution

Support fixture substitution in compile and run

The reason I noticed this is because I prefer graphile-migrate run ./migrations/current.sql over watch as I don't want to run semi-completed statements accidentally. I also don't want to mess with my editor (vscode) to disable auto-save for a single file in my repo.

You should use graphile-migrate watch --once rather than graphile-migrate run for your use case.