Skip to content

Commit 8aa358e

Browse files
Rachel ClarkRachel Clark
authored andcommitted
Add in Enum support and a Helper codegen to build enum type mapping for Npgsql.
1 parent 700045f commit 8aa358e

File tree

3 files changed

+36
-1
lines changed

3 files changed

+36
-1
lines changed

internal/gen.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ func Generate(ctx context.Context, req *plugin.Request) (*plugin.Response, error
5858
}
5959

6060
log.Println("Beginning generation with config: ", conf)
61-
//enums := core.BuildEnums(req)
61+
enums := core.BuildEnums(req)
6262
classes := core.BuildClasses(req)
6363
queries, err := core.BuildQueries(req, conf, classes)
6464
log.Println("queries built: ", queries)
@@ -72,6 +72,7 @@ func Generate(ctx context.Context, req *plugin.Request) (*plugin.Response, error
7272
CsGenVersion: version,
7373
Namespace: conf.Namespace,
7474
Classes: classes,
75+
Enums: enums,
7576
}
7677

7778
funcMap := template.FuncMap{
@@ -114,6 +115,10 @@ func Generate(ctx context.Context, req *plugin.Request) (*plugin.Response, error
114115
return nil, err
115116
}
116117

118+
if err := execute("DbHelper", "helpersFile"); err != nil {
119+
return nil, err
120+
}
121+
117122
files := map[string]struct{}{}
118123
for _, gq := range queries {
119124
files[gq.SourceName] = struct{}{}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{{define "helpersFile" }}// Code generated by sqlc. DO NOT EDIT.
2+
// versions:
3+
// sqlc {{ .SqlcVersion }}
4+
// sqlc-gen-cs {{ .CsGenVersion }}
5+
using Npgsql;
6+
7+
namespace {{ .Namespace }}.helpers;
8+
9+
public static class DbHelpers {
10+
/// <summary>
11+
/// RegisterEnumMappings is REQUIRED to be used for enums to work properly.
12+
/// If you have any enums, remember to use this function when building your data source.
13+
/// </summary>
14+
public static NpgsqlDataSourceBuilder RegisterEnumMappings(this NpgsqlDataSourceBuilder dbBuilder) {
15+
{{- range .Enums }}
16+
dbBuilder.MapEnum<{{.Name}}>();
17+
{{ end }}
18+
19+
return dbBuilder;
20+
}
21+
}
22+
{{ end }}

internal/templates/npgsql/models.tmpl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,14 @@
44
// sqlc-gen-cs {{ .CsGenVersion }}
55

66
namespace {{ .Namespace }};
7+
{{ range .Enums }}
8+
{{ if .Comment }}{{ comment .Comment }}{{ end }}
9+
public enum {{.Name}} { {{- range .Members }}
10+
{{ .Name }},
11+
{{ end }}
12+
}
13+
{{ end }}
14+
715

816
{{range .Classes}}
917
{{if .Comment}}{{comment.Comment}}{{end}}

0 commit comments

Comments
 (0)