Skip to content

Commit 9d0e3ed

Browse files
authored
Use edgedb.Optional in generated optional structs (#283)
This fixes a bug in the generator that didn't make optional structs optional. Also, for generated code, this makes values in slices never be their optional variant.
1 parent 99c07ac commit 9d0e3ed

File tree

11 files changed

+24
-16
lines changed

11 files changed

+24
-16
lines changed

cmd/edgeql-go/gen.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ func generateSlice(
185185
) ([]goType, []string, error) {
186186
types, imports, err := generateType(
187187
desc.Fields[0].Desc,
188-
desc.Fields[0].Required,
188+
true,
189189
path,
190190
mixedCaps,
191191
)
@@ -204,7 +204,7 @@ func generateSliceV2(
204204
) ([]goType, []string, error) {
205205
types, imports, err := generateTypeV2(
206206
&desc.Fields[0].Desc,
207-
desc.Fields[0].Required,
207+
true,
208208
path,
209209
mixedCaps,
210210
)
@@ -223,7 +223,7 @@ func generateObject(
223223
mixedCaps bool,
224224
) ([]goType, []string, error) {
225225
var imports []string
226-
typ := goStruct{Name: nameFromPath(path)}
226+
typ := goStruct{Name: nameFromPath(path), Required: required}
227227
types := []goType{&typ}
228228

229229
for _, field := range desc.Fields {
@@ -258,12 +258,12 @@ func generateObject(
258258

259259
func generateObjectV2(
260260
desc *descriptor.V2,
261-
_ bool,
261+
required bool,
262262
path []string,
263263
mixedCaps bool,
264264
) ([]goType, []string, error) {
265265
var imports []string
266-
typ := goStruct{Name: nameFromPath(path)}
266+
typ := goStruct{Name: nameFromPath(path), Required: required}
267267
types := []goType{&typ}
268268

269269
for _, field := range desc.Fields {
@@ -303,7 +303,7 @@ func generateTuple(
303303
mixedCaps bool,
304304
) ([]goType, []string, error) {
305305
var imports []string
306-
typ := &goStruct{Name: nameFromPath(path)}
306+
typ := &goStruct{Name: nameFromPath(path), Required: required}
307307
types := []goType{typ}
308308

309309
for _, field := range desc.Fields {
@@ -339,12 +339,12 @@ func generateTuple(
339339

340340
func generateTupleV2(
341341
desc *descriptor.V2,
342-
_ bool,
342+
required bool,
343343
path []string,
344344
mixedCaps bool,
345345
) ([]goType, []string, error) {
346346
var imports []string
347-
typ := &goStruct{Name: nameFromPath(path)}
347+
typ := &goStruct{Name: nameFromPath(path), Required: required}
348348
types := []goType{typ}
349349

350350
for _, field := range desc.Fields {

cmd/edgeql-go/templates/struct.template

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,8 @@
22
// is part of the return type for
33
// {{.QueryFuncName}}()
44
type {{.Name}} struct {
5+
{{- if not .Required}}
6+
edgedb.Optional
7+
{{- end}}
58
{{range .Fields}} {{.GoName}} {{.Type}} `{{.Tag}}`
69
{{end}}}

cmd/edgeql-go/testdata/mixedcaps/test-project2/object/select_object_edgeql.go.assert

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ var selectObjectCmd string
1616
// is part of the return type for
1717
// selectObject()
1818
type selectObjectResult struct {
19+
edgedb.Optional
1920
Name string `edgedb:"Name"`
2021
Language string `edgedb:"Language"`
2122
Params []selectObjectResultParamsItem `edgedb:"Params"`

cmd/edgeql-go/testdata/mixedcaps/test-project2/scalar/select_array_edgeql.go.assert

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ var selectArrayCmd string
1818
func selectArray(
1919
ctx context.Context,
2020
client *edgedb.Client,
21-
) ([]edgedb.OptionalStr, error) {
22-
var result []edgedb.OptionalStr
21+
) ([]string, error) {
22+
var result []string
2323

2424
err := client.QuerySingle(
2525
ctx,

cmd/edgeql-go/testdata/mixedcaps/test-project2/scalar/select_scalars_edgeql.go.assert

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ var selectScalarsCmd string
1818
func selectScalars(
1919
ctx context.Context,
2020
client *edgedb.Client,
21-
) ([]edgedb.OptionalMemory, error) {
22-
var result []edgedb.OptionalMemory
21+
) ([]edgedb.Memory, error) {
22+
var result []edgedb.Memory
2323

2424
err := client.Query(
2525
ctx,

cmd/edgeql-go/testdata/mixedcaps/test-project2/tuple/select_tuple_edgeql.go.assert

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ type selectTupleResult struct {
2525
// is part of the return type for
2626
// selectTuple()
2727
type selectTupleResult2Item struct {
28+
edgedb.Optional
2829
Element0 edgedb.OptionalStr `edgedb:"0"`
2930
Element1 edgedb.OptionalInt64 `edgedb:"1"`
3031
}

cmd/edgeql-go/testdata/no-args/test-project2/object/select_object_edgeql.go.assert

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ var selectObjectCmd string
1616
// is part of the return type for
1717
// selectObject()
1818
type selectObjectResult struct {
19+
edgedb.Optional
1920
Name string `edgedb:"Name"`
2021
Language string `edgedb:"Language"`
2122
Params []selectObjectResultParamsItem `edgedb:"Params"`

cmd/edgeql-go/testdata/no-args/test-project2/scalar/select_array_edgeql.go.assert

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ var selectArrayCmd string
1818
func selectArray(
1919
ctx context.Context,
2020
client *edgedb.Client,
21-
) ([]edgedb.OptionalStr, error) {
22-
var result []edgedb.OptionalStr
21+
) ([]string, error) {
22+
var result []string
2323

2424
err := client.QuerySingle(
2525
ctx,

cmd/edgeql-go/testdata/no-args/test-project2/scalar/select_scalars_edgeql.go.assert

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ var selectScalarsCmd string
1818
func selectScalars(
1919
ctx context.Context,
2020
client *edgedb.Client,
21-
) ([]edgedb.OptionalMemory, error) {
22-
var result []edgedb.OptionalMemory
21+
) ([]edgedb.Memory, error) {
22+
var result []edgedb.Memory
2323

2424
err := client.Query(
2525
ctx,

cmd/edgeql-go/testdata/no-args/test-project2/tuple/select_tuple_edgeql.go.assert

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ type selectTupleResult struct {
2525
// is part of the return type for
2626
// selectTuple()
2727
type selectTupleResult2Item struct {
28+
edgedb.Optional
2829
Element0 edgedb.OptionalStr `edgedb:"0"`
2930
Element1 edgedb.OptionalInt64 `edgedb:"1"`
3031
}

0 commit comments

Comments
 (0)