feat(tags): allow smart tags to indicate a column has a default #760
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
PostGraphile automatically determines when a table column has a default, and thus makes that field nullable on the input to a create mutation. However, when we are looking at a different source (for example a view) we cannot determine whether the column has a default or not. If you use the smart tag
@primaryKey
then we'll know that that column is not-null, but it does not indicate that it has a default, and so we think it's required. Often this is not the case (many primary keys have defaults), so in this PR we introduce the@hasDefault
smart tag that you can use to indicate that a column (e.g. your@primaryKey
column) has a default and thus should be exposed as nullable.Fixes graphile/crystal#1544
Performance impact
Negligible.
Security impact
None known.