schema/field: use actual go type in generated interfaces #1428
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.
This change adds a little breaking-change in the schema and the codegen but fixes a problem with
GoType.After this change, users that use a
GoType(&T{})will get*Tin all generated interfaces (instead ofT). However, if users still want to use values (instead of pointers), they can passT{}toGoType(e.g.GoType(T{})), even ifTdoesn't implement thesql.Scannerinterface (but*Tdoes).Also, this change now generates the basic predicates to
driver.Valuertypes (e.g. a struct used inGoType). The basic predicates are:=,<>,<,<=,>,=>,IN,NOT IN. For optional fields, it generates also theIS NULLandIS NOT NULLpredicates.