entc/gen: move eager-loading naming to Go api (#887)

This commit is contained in:
Ariel Mashraki
2020-10-27 20:11:59 +02:00
committed by GitHub
parent 9ea996593b
commit fb97ca66ac
4 changed files with 14 additions and 9 deletions

File diff suppressed because one or more lines are too long

View File

@@ -31,7 +31,7 @@ type {{ $builder }} struct {
{{- with $.Edges }}
// eager-loading edges.
{{- range $e := . }}
with{{ pascal $e.Name }} *{{ $e.Type.QueryName }}
{{ $e.EagerLoadField }} *{{ $e.Type.QueryName }}
{{- end }}
{{- end }}
{{- /* Additional fields to add to the builder. */}}
@@ -276,7 +276,7 @@ func ({{ $receiver }} *{{ $builder }}) Clone() *{{ $builder }} {
for _, opt := range opts {
opt(query)
}
{{ $receiver }}.with{{ pascal $e.Name }} = query
{{ $receiver }}.{{ $e.EagerLoadField }} = query
return {{ $receiver }}
}
{{- end }}

View File

@@ -26,14 +26,14 @@ func ({{ $receiver }} *{{ $builder }}) sqlAll(ctx context.Context) ([]*{{ $.Name
{{- with $.Edges }}
loadedTypes = [{{ len . }}]bool{
{{- range $e := . }}
{{ $receiver }}.with{{ pascal $e.Name }} != nil,
{{ $receiver }}.{{ $e.EagerLoadField }} != nil,
{{- end }}
}
{{- end }}
)
{{- with $.ForeignKeys }}
{{- with $.FKEdges }}
if {{ range $i, $e := . }}{{ if gt $i 0 }} || {{ end }}{{ $receiver }}.with{{ pascal $e.Name }} != nil{{ end }} {
if {{ range $i, $e := . }}{{ if gt $i 0 }} || {{ end }}{{ $receiver }}.{{ $e.EagerLoadField }} != nil{{ end }} {
withFKs = true
}
{{- end }}
@@ -199,7 +199,7 @@ func ({{ $receiver }} *{{ $builder }}) sqlQuery() *sql.Selector {
{{ define "dialect/sql/query/eagerloading" }}
{{- $e := $.Scope.Edge }}
{{- $receiver := $.Scope.Rec }}
if query := {{ $receiver }}.with{{ pascal $e.Name }}; query != nil {
if query := {{ $receiver }}.{{ $e.EagerLoadField }}; query != nil {
{{- if $e.M2M }}
fks := make([]driver.Value, 0, len(nodes))
ids := make(map[{{ $.ID.Type }}]*{{ $.Name }}, len(nodes))

View File

@@ -1117,6 +1117,11 @@ func (e Edge) BuilderField() string {
return builderField(e.Name)
}
// EagerLoadField returns the struct field (of query builder) for storing the eager-loading info.
func (e Edge) EagerLoadField() string {
return "with" + pascal(e.Name)
}
// StructField returns the struct member of the edge in the model.
func (e Edge) StructField() string {
return pascal(e.Name)