Skip to content

Commit 1a8ee5f

Browse files
committed
fix(codegen/golang): don't omit enums used as arrays
1 parent 6ae5bcc commit 1a8ee5f

File tree

5 files changed

+89
-2
lines changed

5 files changed

+89
-2
lines changed

internal/codegen/golang/gen.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@ func filterUnusedStructs(enums []Enum, structs []Struct, queries []Query) ([]Enu
383383
keepTypes[query.Ret.Type()] = struct{}{}
384384
if query.Ret.IsStruct() {
385385
for _, field := range query.Ret.Struct.Fields {
386-
keepTypes[field.Type] = struct{}{}
386+
keepTypes[strings.TrimPrefix(field.Type, "[]")] = struct{}{}
387387
for _, embedField := range field.EmbedFields {
388388
keepTypes[embedField.Type] = struct{}{}
389389
}

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

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

internal/endtoend/testdata/omit_unused_structs/postgresql/stdlib/go/query.sql.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/omit_unused_structs/postgresql/stdlib/query.sql

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,6 @@ SELECT value, another FROM query_return_struct_enum_table WHERE id = $1;
1515

1616
-- name: query_sqlc_embed_table :one
1717
SELECT sqlc.embed(query_sqlc_embed_table) FROM query_sqlc_embed_table WHERE id = $1;
18+
19+
-- name: query_enum_array_table :many
20+
SELECT * FROM array_enum_table;

internal/endtoend/testdata/omit_unused_structs/postgresql/stdlib/schema.sql

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,4 +58,12 @@ CREATE TYPE query_sqlc_embed_enum AS ENUM (
5858
CREATE TABLE query_sqlc_embed_table (
5959
id INTEGER PRIMARY KEY,
6060
value query_sqlc_embed_enum
61-
)
61+
);
62+
63+
CREATE TYPE array_enum AS ENUM (
64+
'o', 'p'
65+
);
66+
CREATE TABLE array_enum_table (
67+
id INTEGER PRIMARY KEY,
68+
value array_enum[]
69+
);

0 commit comments

Comments
 (0)