@@ -124,9 +124,40 @@ func Generate(ctx context.Context, req *plugin.GenerateRequest) (*plugin.Generat
124
124
enums , structs = filterUnusedStructs (enums , structs , queries )
125
125
}
126
126
127
+ if err := validate (options , enums , structs , queries ); err != nil {
128
+ return nil , err
129
+ }
130
+
127
131
return generate (req , options , enums , structs , queries )
128
132
}
129
133
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
+
130
161
func generate (req * plugin.GenerateRequest , options * opts.Options , enums []Enum , structs []Struct , queries []Query ) (* plugin.GenerateResponse , error ) {
131
162
i := & importer {
132
163
Options : options ,
0 commit comments