Skip to content

Commit 4cdf5e2

Browse files
authored
Fix unused imports for Go code generator (#722)
* Fix unused imports for Go generator For ":cmd" queries, the return type should not be imported. * Add e2e test Tests the patch for unused imports.
1 parent ae0a1f8 commit 4cdf5e2

File tree

8 files changed

+111
-3
lines changed

8 files changed

+111
-3
lines changed

internal/codegen/golang/imports.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ func (i *importer) dbImports() fileImports {
9494
func (i *importer) interfaceImports() fileImports {
9595
uses := func(name string) bool {
9696
for _, q := range i.Queries {
97-
if !q.Ret.isEmpty() {
97+
if q.hasRetType() {
9898
if strings.HasPrefix(q.Ret.Type(), name) {
9999
return true
100100
}
@@ -244,7 +244,7 @@ func (i *importer) queryImports(filename string) fileImports {
244244

245245
uses := func(name string) bool {
246246
for _, q := range gq {
247-
if !q.Ret.isEmpty() {
247+
if q.hasRetType() {
248248
if q.Ret.EmitStruct() {
249249
for _, f := range q.Ret.Struct.Fields {
250250
fType := strings.TrimPrefix(f.Type, "[]")
@@ -276,7 +276,7 @@ func (i *importer) queryImports(filename string) fileImports {
276276

277277
sliceScan := func() bool {
278278
for _, q := range gq {
279-
if !q.Ret.isEmpty() {
279+
if q.hasRetType() {
280280
if q.Ret.IsStruct() {
281281
for _, f := range q.Ret.Struct.Fields {
282282
if strings.HasPrefix(f.Type, "[]") && f.Type != "[]byte" {

internal/codegen/golang/query.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,3 +101,7 @@ type Query struct {
101101
Ret QueryValue
102102
Arg QueryValue
103103
}
104+
105+
func (q Query) hasRetType() bool {
106+
return q.Cmd != ":exec" && !q.Ret.isEmpty()
107+
}

internal/endtoend/testdata/exec_imports/go/db.go

Lines changed: 29 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/endtoend/testdata/exec_imports/go/models.go

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/endtoend/testdata/exec_imports/go/querier.go

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/endtoend/testdata/exec_imports/go/query.sql.go

Lines changed: 28 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
CREATE TABLE foo (bar int, bars int[] not null);
2+
3+
-- name: Bar :exec
4+
SELECT bar
5+
FROM foo;
6+
7+
-- name: Bars :exec
8+
SELECT bars
9+
FROM foo;
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"version": "1",
3+
"packages": [
4+
{
5+
"path": "go",
6+
"name": "querytest",
7+
"schema": "query.sql",
8+
"queries": "query.sql",
9+
"emit_interface": true
10+
}
11+
]
12+
}

0 commit comments

Comments
 (0)