Skip to content

Commit 8010aea

Browse files
committed
use alias
1 parent b7341ba commit 8010aea

File tree

19 files changed

+314
-54
lines changed

19 files changed

+314
-54
lines changed

internal/codegen/golang/result.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ type goEmbed struct {
123123

124124
// look through all the structs and attempt to find a matching one to embed
125125
// We need the name of the struct and its field names.
126-
func newGoEmbed(embed *plugin.Identifier, structs []Struct, defaultSchema string) *goEmbed {
126+
func newGoEmbed(columnName string, embed *plugin.Identifier, structs []Struct, defaultSchema string) *goEmbed {
127127
if embed == nil {
128128
return nil
129129
}
@@ -140,13 +140,16 @@ func newGoEmbed(embed *plugin.Identifier, structs []Struct, defaultSchema string
140140
}
141141

142142
fields := make([]Field, len(s.Fields))
143-
for i, f := range s.Fields {
144-
fields[i] = f
143+
copy(fields, s.Fields)
144+
145+
structName := s.Name
146+
if s.Table.Name != columnName {
147+
structName = columnName
145148
}
146149

147150
return &goEmbed{
148151
modelType: s.Name,
149-
modelName: s.Name,
152+
modelName: structName,
150153
fields: fields,
151154
}
152155
}
@@ -287,7 +290,7 @@ func buildQueries(req *plugin.GenerateRequest, options *opts.Options, structs []
287290
columns = append(columns, goColumn{
288291
id: i,
289292
Column: c,
290-
embed: newGoEmbed(c.EmbedTable, structs, req.Catalog.DefaultSchema),
293+
embed: newGoEmbed(c.Name, c.EmbedTable, structs, req.Catalog.DefaultSchema),
291294
})
292295
}
293296
var err error

internal/compiler/output_columns.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ func (c *Compiler) outputColumns(qc *QueryCatalog, node ast.Node) ([]*Column, er
268268
// add a column with a reference to an embedded table
269269
if embed, ok := qc.embeds.Find(n); ok {
270270
cols = append(cols, &Column{
271-
Name: embed.Table.Name,
271+
Name: embed.Name(),
272272
EmbedTable: embed.Table,
273273
})
274274
continue

internal/endtoend/testdata/sqlc_embed/mysql/go/models.go

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

internal/endtoend/testdata/sqlc_embed/mysql/go/query.sql.go

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

internal/endtoend/testdata/sqlc_embed/mysql/query.sql

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,13 @@ SELECT sqlc.embed(bu) FROM baz.users bu;
2222

2323
-- name: WithCrossSchema :many
2424
SELECT sqlc.embed(users), sqlc.embed(bu) FROM users
25-
INNER JOIN baz.users bu ON users.id = bu.id;
25+
INNER JOIN baz.users bu ON users.id = bu.id;
26+
27+
-- name: ListUserLink :many
28+
SELECT
29+
sqlc.embed(owner),
30+
sqlc.embed(consumers)
31+
FROM
32+
user_links
33+
INNER JOIN users AS owner ON owner.id = user_links.owner_id
34+
INNER JOIN users AS consumers ON consumers.id = user_links.consumer_id;

internal/endtoend/testdata/sqlc_embed/mysql/schema.sql

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,8 @@ CREATE TABLE baz.users (
1616
name varchar(255) NOT NULL
1717
);
1818

19-
19+
CREATE TABLE user_links (
20+
owner_id integer NOT NULL,
21+
consumer_id integer NOT NULL,
22+
PRIMARY KEY (owner_id, consumer_id)
23+
);

internal/endtoend/testdata/sqlc_embed/postgresql/pgx/go/models.go

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

internal/endtoend/testdata/sqlc_embed/postgresql/pgx/go/query.sql.go

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

internal/endtoend/testdata/sqlc_embed/postgresql/pgx/query.sql

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,13 @@ SELECT sqlc.embed(bu) FROM baz.users bu;
2222

2323
-- name: WithCrossSchema :many
2424
SELECT sqlc.embed(users), sqlc.embed(bu) FROM users
25-
INNER JOIN baz.users bu ON users.id = bu.id;
25+
INNER JOIN baz.users bu ON users.id = bu.id;
26+
27+
-- name: ListUserLink :many
28+
SELECT
29+
sqlc.embed(owner),
30+
sqlc.embed(consumer)
31+
FROM
32+
user_links
33+
INNER JOIN users AS owner ON owner.id = user_links.owner_id
34+
INNER JOIN users AS consumer ON consumer.id = user_links.consumer_id;

internal/endtoend/testdata/sqlc_embed/postgresql/pgx/schema.sql

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,8 @@ CREATE TABLE baz.users (
1616
name varchar(255) NOT NULL
1717
);
1818

19-
19+
CREATE TABLE user_links (
20+
owner_id integer NOT NULL,
21+
consumer_id integer NOT NULL,
22+
PRIMARY KEY (owner_id, consumer_id)
23+
);

internal/endtoend/testdata/sqlc_embed/postgresql/stdlib/go/models.go

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

0 commit comments

Comments
 (0)