Skip to content

Commit 59bc936

Browse files
authored
Scan enums when using pgx (#386)
While work on adding full support for pgx hasn't started (#28), this change allows sqlc-generated code to be used with pgx's stdlib package github.com/jackc/pgx/v4/stdlib. Note that you'll still see errors if you try using PostgreSQL arrays.
1 parent c3f69df commit 59bc936

File tree

14 files changed

+129
-21
lines changed

14 files changed

+129
-21
lines changed

README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -482,8 +482,7 @@ If you need to update a large number of expexted test output in the
482482
`internal/endtoend/testdata` directory, run the `regenerate.sh` script.
483483

484484
```
485-
cd internal/endtoend
486-
./regenerate.sh
485+
./scripts/regenerate.sh
487486
```
488487

489488
## Acknowledgements

examples/booktest/mysql/models.go

Lines changed: 9 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/booktest/postgresql/models.go

Lines changed: 9 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/ondeck/models.go

Lines changed: 9 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/dinosql/gen.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,9 @@ func modelImports(r Generateable, settings config.CombinedSettings) fileImports
340340
if UsesType(r, "net.HardwareAddr", settings) {
341341
std["net"] = struct{}{}
342342
}
343+
if len(r.Enums(settings)) > 0 {
344+
std["fmt"] = struct{}{}
345+
}
343346

344347
// Custom imports
345348
pkg := make(map[string]struct{})
@@ -1144,7 +1147,14 @@ const (
11441147
)
11451148
11461149
func (e *{{.Name}}) Scan(src interface{}) error {
1147-
*e = {{.Name}}(src.([]byte))
1150+
switch s := src.(type) {
1151+
case []byte:
1152+
*e = {{.Name}}(s)
1153+
case string:
1154+
*e = {{.Name}}(s)
1155+
default:
1156+
return fmt.Errorf("unsupported scan type for {{.Name}}: %T", src)
1157+
}
11481158
return nil
11491159
}
11501160
{{end}}

internal/endtoend/regenerate.sh

Lines changed: 0 additions & 3 deletions
This file was deleted.

internal/endtoend/testdata/enums/go/models.go

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

internal/endtoend/testdata/mysql_enums/go/models.go

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

internal/endtoend/testdata/mysql_overrides/go/models.go

Lines changed: 9 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/endtoend/testdata/mysql_param/go/models.go

Lines changed: 9 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)