Skip to content

Commit 563bbcb

Browse files
committed
feat(sqlite): support sqlc.embed function
1 parent ee40f72 commit 563bbcb

File tree

4 files changed

+114
-20
lines changed

4 files changed

+114
-20
lines changed

internal/codegen/golang/result.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,13 +114,13 @@ type goEmbed struct {
114114

115115
// look through all the structs and attempt to find a matching one to embed
116116
// We need the name of the struct and its field names.
117-
func newGoEmbed(embed *plugin.Identifier, structs []Struct) *goEmbed {
117+
func newGoEmbed(embed *plugin.Identifier, structs []Struct, defaultSchema string) *goEmbed {
118118
if embed == nil {
119119
return nil
120120
}
121121

122122
for _, s := range structs {
123-
embedSchema := "public"
123+
embedSchema := defaultSchema
124124
if embed.Schema != "" {
125125
embedSchema = embed.Schema
126126
}
@@ -280,7 +280,7 @@ func buildQueries(req *plugin.CodeGenRequest, structs []Struct) ([]Query, error)
280280
columns = append(columns, goColumn{
281281
id: i,
282282
Column: c,
283-
embed: newGoEmbed(c.EmbedTable, structs),
283+
embed: newGoEmbed(c.EmbedTable, structs, req.Catalog.DefaultSchema),
284284
})
285285
}
286286
var err error

internal/endtoend/testdata/sqlc_embed/sqlite/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/sqlite/go/query.sql.go

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

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
ATTACH 'baz.db' AS baz;
2+
13
CREATE TABLE users (
24
id integer PRIMARY KEY,
35
name text NOT NULL,
@@ -9,6 +11,12 @@ CREATE TABLE posts (
911
user_id integer NOT NULL
1012
);
1113

14+
CREATE TABLE baz.users (
15+
id integer PRIMARY KEY,
16+
name text NOT NULL
17+
);
18+
19+
1220
-- name: Only :one
1321
SELECT sqlc.embed(users) FROM users;
1422

@@ -27,3 +35,10 @@ SELECT sqlc.embed(users), sqlc.embed(users) FROM users;
2735
-- name: Join :one
2836
SELECT sqlc.embed(u), sqlc.embed(p) FROM posts AS p
2937
INNER JOIN users AS u ON p.user_id = u.users.id;
38+
39+
-- name: WithSchema :one
40+
SELECT sqlc.embed(bu) FROM baz.users AS bu;
41+
42+
-- name: WithCrossSchema :many
43+
SELECT sqlc.embed(u), sqlc.embed(bu) FROM users AS u
44+
INNER JOIN baz.users bu ON u.id = bu.id;

0 commit comments

Comments
 (0)