entc/gen: add <E>Loaded for <T>Edges (#319)

This helps to determine if the edge was loaded (or requested) in
eager-loading even if it's empty.
This commit is contained in:
Ariel Mashraki
2020-01-29 11:39:19 +02:00
committed by GitHub
parent 7a480e3943
commit 27935a8c6c
119 changed files with 1650 additions and 167 deletions

View File

@@ -18,11 +18,18 @@ in the LICENSE file in the root directory of this source tree.
func ({{ $receiver }} *{{ $builder }}) sqlAll(ctx context.Context) ([]*{{ $.Name }}, error) {
var (
nodes []*{{ $.Name }} = []*{{ $.Name }}{}
nodes = []*{{ $.Name }}{}
{{- with $.ForeignKeys }}
withFKs = {{ $receiver }}.withFKs
{{- end }}
_spec = {{ $receiver }}.querySpec()
{{- with $.Edges }}
loadedTypes = [{{ len . }}]bool{
{{- range $e := . }}
{{ $receiver }}.with{{ pascal $e.Name }} != nil,
{{- end }}
}
{{- end }}
)
{{- with $.ForeignKeys }}
{{- with $.FKEdges }}
@@ -50,6 +57,9 @@ func ({{ $receiver }} *{{ $builder }}) sqlAll(ctx context.Context) ([]*{{ $.Name
return fmt.Errorf("{{ $pkg }}: Assign called without calling ScanValues")
}
node := nodes[len(nodes)-1]
{{- with $.Edges }}
node.Edges.loadedTypes = loadedTypes
{{- end }}
return node.assignValues(values...)
}
if err := sqlgraph.QueryNodes(ctx, {{ $receiver }}.driver, _spec); err != nil {