Skip to content

Commit e31e3bd

Browse files
committed
fix: Rename argument when conflicted to imported package
1 parent 3820358 commit e31e3bd

File tree

7 files changed

+130
-1
lines changed

7 files changed

+130
-1
lines changed

internal/codegen/golang/gen.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,6 @@ func generate(req *plugin.CodeGenRequest, enums []Enum, structs []Struct, querie
9494
SQLDriver: parseDriver(golang.SqlPackage),
9595
Q: "`",
9696
Package: golang.Package,
97-
GoQueries: queries,
9897
Enums: enums,
9998
Structs: structs,
10099
SqlcVersion: req.SqlcVersion,
@@ -111,9 +110,13 @@ func generate(req *plugin.CodeGenRequest, enums []Enum, structs []Struct, querie
111110
output := map[string]string{}
112111

113112
execute := func(name, templateName string) error {
113+
imports := i.Imports(name)
114+
replacedQueries := replaceConflictedArg(imports, queries)
115+
114116
var b bytes.Buffer
115117
w := bufio.NewWriter(&b)
116118
tctx.SourceName = name
119+
tctx.GoQueries = replacedQueries
117120
err := tmpl.ExecuteTemplate(w, templateName, &tctx)
118121
w.Flush()
119122
if err != nil {

internal/codegen/golang/imports.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -462,3 +462,22 @@ func trimSliceAndPointerPrefix(v string) string {
462462
v = strings.TrimPrefix(v, "*")
463463
return v
464464
}
465+
466+
func replaceConflictedArg(imports [][]ImportSpec, queries []Query) []Query {
467+
m := make(map[string]struct{})
468+
for _, is := range imports {
469+
for _, i := range is {
470+
paths := strings.Split(i.Path, "/")
471+
m[paths[len(paths)-1]] = struct{}{}
472+
}
473+
}
474+
475+
replacedQueries := make([]Query, 0, len(queries))
476+
for _, query := range queries {
477+
if _, exist := m[query.Arg.Name]; exist {
478+
query.Arg.Name = toCamelCase(fmt.Sprintf("arg_%s", query.Arg.Name))
479+
}
480+
replacedQueries = append(replacedQueries, query)
481+
}
482+
return replacedQueries
483+
}

internal/endtoend/testdata/conflicted_arg_name/postgresql/db/db.go

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

internal/endtoend/testdata/conflicted_arg_name/postgresql/db/models.go

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

internal/endtoend/testdata/conflicted_arg_name/postgresql/db/query.sql.go

Lines changed: 35 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
CREATE TABLE foo (
2+
time date NOT NULL,
3+
time2 date NOT NULL,
4+
uuid uuid NOT NULL,
5+
uuid2 uuid NOT NULL
6+
);
7+
8+
-- name: Time2ByTime :one
9+
SELECT time2 FROM foo WHERE time=$1;
10+
11+
-- name: Uuid2ByUuid :one
12+
SELECT uuid2 FROM foo WHERE uuid=$1;
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"version": "1",
3+
"packages": [
4+
{
5+
"path": "db",
6+
"engine": "postgresql",
7+
"schema": "query.sql",
8+
"queries": "query.sql"
9+
}
10+
]
11+
}

0 commit comments

Comments
 (0)