66 "github.com/99designs/gqlgen/codegen/config"
77 "github.com/99designs/gqlgen/plugin"
88 gqlgencConfig "github.com/Yamashou/gqlgenc/config"
9+ "github.com/Yamashou/gqlgenc/parsequery"
10+ "github.com/Yamashou/gqlgenc/querydocument"
911 "github.com/vektah/gqlparser/v2/ast"
1012)
1113
@@ -19,25 +21,54 @@ type Plugin struct {
1921 GenerateConfig * gqlgencConfig.GenerateConfig
2022}
2123
22- func New (queryFilePaths [] string , queryDocument * ast.QueryDocument , operationQueryDocuments []* ast.QueryDocument , client config.PackageConfig , generateConfig * gqlgencConfig.GenerateConfig ) * Plugin {
24+ func New (queryDocument * ast.QueryDocument , operationQueryDocuments []* ast.QueryDocument , client config.PackageConfig , generateConfig * gqlgencConfig.GenerateConfig ) * Plugin {
2325 return & Plugin {
24- queryFilePaths : queryFilePaths ,
2526 queryDocument : queryDocument ,
2627 operationQueryDocuments : operationQueryDocuments ,
2728 Client : client ,
2829 GenerateConfig : generateConfig ,
2930 }
3031}
3132
33+ func NewWithQueryDocument (queryFilePaths []string , client config.PackageConfig , generateConfig * gqlgencConfig.GenerateConfig ) * Plugin {
34+ return & Plugin {
35+ queryFilePaths : queryFilePaths ,
36+ Client : client ,
37+ GenerateConfig : generateConfig ,
38+ }
39+ }
40+
3241func (p * Plugin ) Name () string {
3342 return "clientgen"
3443}
3544
3645func (p * Plugin ) MutateConfig (cfg * config.Config ) error {
46+ queryDocument := p .queryDocument
47+ if queryDocument == nil {
48+ querySources , err := parsequery .LoadQuerySources (p .queryFilePaths )
49+ if err != nil {
50+ return fmt .Errorf ("load query sources failed: %w" , err )
51+ }
52+
53+ queryDocument , err = parsequery .ParseQueryDocuments (cfg .Schema , querySources )
54+ if err != nil {
55+ return fmt .Errorf (": %w" , err )
56+ }
57+ }
58+
59+ var err error
60+ operationQueryDocuments := p .operationQueryDocuments
61+ if operationQueryDocuments == nil {
62+ operationQueryDocuments , err = querydocument .QueryDocumentsByOperations (cfg .Schema , queryDocument .Operations )
63+ if err != nil {
64+ return fmt .Errorf (": %w" , err )
65+ }
66+ }
67+
3768 // テンプレートと情報ソースを元にコード生成
3869 // Generate code from template and document source
3970 sourceGenerator := NewSourceGenerator (cfg , p .Client , p .GenerateConfig )
40- source := NewSource (cfg .Schema , p . queryDocument , sourceGenerator , p .GenerateConfig )
71+ source := NewSource (cfg .Schema , queryDocument , sourceGenerator , p .GenerateConfig )
4172
4273 fragments , err := source .Fragments ()
4374 if err != nil {
@@ -49,7 +80,7 @@ func (p *Plugin) MutateConfig(cfg *config.Config) error {
4980 return fmt .Errorf ("generating operation response failed: %w" , err )
5081 }
5182
52- operations , err := source .Operations (p . operationQueryDocuments )
83+ operations , err := source .Operations (operationQueryDocuments )
5384 if err != nil {
5485 return fmt .Errorf ("generating operation failed: %w" , err )
5586 }
0 commit comments