0
I use https://github.com/99designs/gqlgen for generating golang code from graphql schema. I need to be able to add gorm tags to the resulting golang types. For that, I declare a directive for custom go tags (in schema.directives.gql
):
directive @goTag(
key: String!
value: String
) on INPUT_FIELD_DEFINITION | FIELD_DEFINITION
Then I use it the following way in a graphql schema file:
type Value {
value: Float!
unit: String!
}
type Order {
name: String! @goTag(key: "gorm", value: "primaryKey")
amount: Value! @goTag(key: "gorm", value: "embedded;embeddedPrefix:dissolutionAmount_")
submitterRef String!
submitter: Person! @goTag(key: "gorm", value: "foreignKey: SubmitterRef")
}
Then I run code generation: go run github.com/99designs/gqlgen generate
and the resulting code contains gorm tags that cut out text after ":" character:
type Order struct {
Name string `json:"name" gorm:"primaryKey"` // <--- this is correct
Amount Value `json:"amount" gorm:"embedded;embeddedPrefix` // INCORRECT - everything after "embeddedPrefix" is truncated: ":dissolutionAmount_" is missing, including trailing double quote
SubmitterRef string. `json:"submitterRef"`
Submitter Person `json:"submitter" gorm:"foreignKey` // INCORRECT - value in gorm tag is truncated, ": SubmitterRef" is missing
}