graphql-go / graphql

An implementation of GraphQL for Go / Golang
MIT License
9.87k stars 839 forks source link

BindFields: added default fields tag #589

Open gstarikov opened 3 years ago

gstarikov commented 3 years ago

hi. i didn't understand why it necessary to specify json tags for every field. so i added default values for BindFields function.

coveralls commented 3 years ago

Coverage Status

Coverage increased (+0.004%) to 92.43% when pulling 675936e049414bbff074a051784b9ade6dbe4916 on gstarikov:master into ba29b760515413113cb4d99cb115b2cff11d60a2 on graphql-go:master.

williamhaley commented 3 years ago

Agreed. I ran into this same issue today. The current behavior that requires specifying a tag is a bit intuitive. I think this PR makes a lot of sense. Is there anything I or others can do to help push this along?

FWIW, I tried a workaround in the meantime...

graphql.BindFields(CloneAndAddTags(myType{}))

With CloneAndAddTags I used reflection to dynamically clone the source struct Type and set the appropriate json tags so that BindFields could understand, but that failed. BindFields generates a resolver that invokes extractTag so my hack was doomed.