Skip to content

Commit 205c55d

Browse files
authored
fix(vet): Split vet messages out of codegen.proto (#2511)
1 parent 6281395 commit 205c55d

File tree

7 files changed

+12397
-12186
lines changed

7 files changed

+12397
-12186
lines changed

internal/cmd/vet.go

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"github.com/kyleconroy/sqlc/internal/opts"
2828
"github.com/kyleconroy/sqlc/internal/plugin"
2929
"github.com/kyleconroy/sqlc/internal/shfmt"
30+
"github.com/kyleconroy/sqlc/internal/vet"
3031
)
3132

3233
var ErrFailedChecks = errors.New("failed checks")
@@ -76,22 +77,22 @@ func Vet(ctx context.Context, e Env, dir, filename string, stderr io.Writer) err
7677
cel.StdLib(),
7778
ext.Strings(ext.StringsVersion(1)),
7879
cel.Types(
79-
&plugin.VetConfig{},
80-
&plugin.VetQuery{},
81-
&plugin.PostgreSQLExplain{},
82-
&plugin.MySQLExplain{},
80+
&vet.Config{},
81+
&vet.Query{},
82+
&vet.PostgreSQL{},
83+
&vet.MySQL{},
8384
),
8485
cel.Variable("query",
85-
cel.ObjectType("plugin.VetQuery"),
86+
cel.ObjectType("vet.Query"),
8687
),
8788
cel.Variable("config",
88-
cel.ObjectType("plugin.VetConfig"),
89+
cel.ObjectType("vet.Config"),
8990
),
9091
cel.Variable("postgresql",
91-
cel.ObjectType("plugin.PostgreSQL"),
92+
cel.ObjectType("vet.PostgreSQL"),
9293
),
9394
cel.Variable("mysql",
94-
cel.ObjectType("plugin.MySQL"),
95+
cel.ObjectType("vet.MySQL"),
9596
),
9697
)
9798
if err != nil {
@@ -170,7 +171,7 @@ func (p *pgxConn) Prepare(ctx context.Context, name, query string) error {
170171
}
171172

172173
func (p *pgxConn) Explain(ctx context.Context, query string, args ...*plugin.Parameter) (*vetEngineOutput, error) {
173-
eQuery := "EXPLAIN (ANALYZE false, VERBOSE, COSTS, SETTINGS, BUFFERS, FORMAT JSON) "+query
174+
eQuery := "EXPLAIN (ANALYZE false, VERBOSE, COSTS, SETTINGS, BUFFERS, FORMAT JSON) " + query
174175
eArgs := make([]any, len(args))
175176
row := p.c.QueryRow(ctx, eQuery, eArgs...)
176177
var result []json.RawMessage
@@ -181,11 +182,11 @@ func (p *pgxConn) Explain(ctx context.Context, query string, args ...*plugin.Par
181182
fmt.Println(eQuery)
182183
fmt.Println(string(result[0]))
183184
}
184-
var explain plugin.PostgreSQLExplain
185+
var explain vet.PostgreSQLExplain
185186
if err := pjson.Unmarshal(result[0], &explain); err != nil {
186187
return nil, err
187188
}
188-
return &vetEngineOutput{PostgreSQL: &plugin.PostgreSQL{Explain: &explain}}, nil
189+
return &vetEngineOutput{PostgreSQL: &vet.PostgreSQL{Explain: &explain}}, nil
189190
}
190191

191192
type dbPreparer struct {
@@ -207,7 +208,7 @@ type mysqlExplainer struct {
207208
}
208209

209210
func (me *mysqlExplainer) Explain(ctx context.Context, query string, args ...*plugin.Parameter) (*vetEngineOutput, error) {
210-
eQuery := "EXPLAIN FORMAT=JSON "+query
211+
eQuery := "EXPLAIN FORMAT=JSON " + query
211212
eArgs := make([]any, len(args))
212213
row := me.QueryRowContext(ctx, eQuery, eArgs...)
213214
var result json.RawMessage
@@ -218,14 +219,14 @@ func (me *mysqlExplainer) Explain(ctx context.Context, query string, args ...*pl
218219
fmt.Println(eQuery)
219220
fmt.Println(string(result))
220221
}
221-
var explain plugin.MySQLExplain
222+
var explain vet.MySQLExplain
222223
if err := pjson.Unmarshal(result, &explain); err != nil {
223224
return nil, err
224225
}
225226
if explain.QueryBlock.Message != "" {
226227
return nil, fmt.Errorf("mysql explain: %s", explain.QueryBlock.Message)
227228
}
228-
return &vetEngineOutput{MySQL: &plugin.MySQL{Explain: &explain}}, nil
229+
return &vetEngineOutput{MySQL: &vet.MySQL{Explain: &explain}}, nil
229230
}
230231

231232
type rule struct {
@@ -377,7 +378,8 @@ func (c *checker) checkSQL(ctx context.Context, s config.SQL) error {
377378
}
378379

379380
// Get explain output for this query if we need it
380-
_, pgsqlOK := evalMap["postgresql"]; _, mysqlOK := evalMap["mysql"]
381+
_, pgsqlOK := evalMap["postgresql"]
382+
_, mysqlOK := evalMap["mysql"]
381383
if rule.NeedsExplain && !(pgsqlOK || mysqlOK) {
382384
if expl == nil {
383385
fmt.Fprintf(c.Stderr, "%s: %s: %s: error explaining query: database connection required\n", query.Filename, query.Name, name)
@@ -420,23 +422,23 @@ func (c *checker) checkSQL(ctx context.Context, s config.SQL) error {
420422
return nil
421423
}
422424

423-
func vetConfig(req *plugin.CodeGenRequest) *plugin.VetConfig {
424-
return &plugin.VetConfig{
425+
func vetConfig(req *plugin.CodeGenRequest) *vet.Config {
426+
return &vet.Config{
425427
Version: req.Settings.Version,
426428
Engine: req.Settings.Engine,
427429
Schema: req.Settings.Schema,
428430
Queries: req.Settings.Queries,
429431
}
430432
}
431433

432-
func vetQuery(q *plugin.Query) *plugin.VetQuery {
433-
var params []*plugin.VetParameter
434+
func vetQuery(q *plugin.Query) *vet.Query {
435+
var params []*vet.Parameter
434436
for _, p := range q.Params {
435-
params = append(params, &plugin.VetParameter{
437+
params = append(params, &vet.Parameter{
436438
Number: p.Number,
437439
})
438440
}
439-
return &plugin.VetQuery{
441+
return &vet.Query{
440442
Sql: q.Text,
441443
Name: q.Name,
442444
Cmd: strings.TrimPrefix(":", q.Cmd),
@@ -445,6 +447,6 @@ func vetQuery(q *plugin.Query) *plugin.VetQuery {
445447
}
446448

447449
type vetEngineOutput struct {
448-
PostgreSQL *plugin.PostgreSQL
449-
MySQL *plugin.MySQL
450+
PostgreSQL *vet.PostgreSQL
451+
MySQL *vet.MySQL
450452
}

0 commit comments

Comments
 (0)