graphile / graphile/migrate

Use comments to show when fixtures were used

Open
#208 1 comment 4 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
835
Forks
64
Avg merge
17m
Merged PRs (30d)
5

Description

### Feature description

In experimenting with the new fixture feature, I noticed that:
1. There is no way to tell in the committed migration that a fixture was used.
2. When uncommitting a migration that used a fixture, the fixture contents are inlined back into the migration

It seems like it would be useful to include some comments that indicate it came from a fixture. Maybe something like

current.sql:

```sql
select 'foo';
--! include functions/hello.sql
```

fixtures/functions/hello.sql

```sql
create or replace function public.hello() returns text as $$
select 'Hello, world!';
$$ language sql;
```

translating into 000001.sql

```sql
--! Previous: -
--! Hash: sha1:a62f7d32702b880992ad9e2a7753dd977267064a

select 'foo';

--! Included: functions/hello.sql
create or replace function public.hello() returns text as $$
select 'Hello, world!';
$$ language sql;
--! EndIncluded
```

I'm not deeply familiar with naming conventions of the !-- comments, so of course feel free to suggest better names

### Motivating example

I was messing around with the new fixture features and was curious how it handled unmigrations. Admittedly, unmigrating is not a common thing I do, so it's not a huge deal. But as I thought about it, I came to think that even including a comment in the final migration that the statements came from a fixture is a positive addition to help future readers of migrations understand how the migrations were written.

### Breaking changes

It seems like a change like this would only affect migrations going forward, so hopefully no breaking changes for anyone who is already on the 2.0 release candidates.

### Supporting development

I:

- [ ] 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
- [ ] am willing to write a test-driven test suite for this feature (before it exists)
- [x] am a [Graphile sponsor](https://www.graphile.org/sponsor/) ❤️ (Just at the "backer" level)
- [ ] have an active [support or consultancy contract](https://www.graphile.org/support/) with Graphile

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.