@@ -124,9 +124,40 @@ func Generate(ctx context.Context, req *plugin.GenerateRequest) (*plugin.Generat
124124 enums , structs = filterUnusedStructs (enums , structs , queries )
125125 }
126126
127+ if err := validate (options , enums , structs , queries ); err != nil {
128+ return nil , err
129+ }
130+
127131 return generate (req , options , enums , structs , queries )
128132}
129133
134+ func validate (options * opts.Options , enums []Enum , structs []Struct , queries []Query ) error {
135+ enumNames := make (map [string ]struct {})
136+ for _ , enum := range enums {
137+ enumNames [enum .Name ] = struct {}{}
138+ enumNames ["Null" + enum .Name ] = struct {}{}
139+ }
140+ structNames := make (map [string ]struct {})
141+ for _ , struckt := range structs {
142+ if _ , ok := enumNames [struckt .Name ]; ok {
143+ return fmt .Errorf ("struct name conflicts with enum name: %s" , struckt .Name )
144+ }
145+ structNames [struckt .Name ] = struct {}{}
146+ }
147+ if ! options .EmitExportedQueries {
148+ return nil
149+ }
150+ for _ , query := range queries {
151+ if _ , ok := enumNames [query .ConstantName ]; ok {
152+ return fmt .Errorf ("query constant name conflicts with enum name: %s" , query .ConstantName )
153+ }
154+ if _ , ok := structNames [query .ConstantName ]; ok {
155+ return fmt .Errorf ("query constant name conflicts with struct name: %s" , query .ConstantName )
156+ }
157+ }
158+ return nil
159+ }
160+
130161func generate (req * plugin.GenerateRequest , options * opts.Options , enums []Enum , structs []Struct , queries []Query ) (* plugin.GenerateResponse , error ) {
131162 i := & importer {
132163 Options : options ,
0 commit comments