entc/gen: change neighbors query to use Step builder

Summary: Pull Request resolved: https://github.com/facebookincubator/ent/pull/202

Reviewed By: alexsn

Differential Revision: D18725770

fbshipit-source-id: d7720ac89f55022a7721edc7df15fab1d6e3672c
This commit is contained in:
Ariel Mashraki
2019-11-27 06:11:04 -08:00
committed by Facebook Github Bot
parent 0e73d57571
commit ed3747ff82
15 changed files with 174 additions and 333 deletions

View File

@@ -88,19 +88,20 @@ func ({{ $receiver }} *{{ $builder }}) sqlQuery() *sql.Selector {
{{/* query/path defines the query generation for path of a given edge. */}}
{{ define "dialect/sql/query/path" }}
{{- $n := $ }}
{{- $n := $ }} {{/* the node we start the query from. */}}
{{- $e := $.Scope.Edge }} {{/* the edge we need to genegrate the path to. */}}
{{- $receiver := $.Scope.Receiver }}
step := &sql.Step{}
step.From.V = {{ $receiver }}.sqlQuery()
step.From.Table = {{ $n.Package }}.Table
step.From.Column = {{ $n.Package }}.{{ $n.ID.Constant }}
step.To.Table = {{ $e.Type.Package }}.Table
step.To.Column = {{ $e.Type.Package }}.{{ $e.Type.ID.Constant }}
step.Edge.Rel = sql.{{ $e.Rel.Type }}
step.Edge.Inverse = {{ $e.IsInverse }}
step.Edge.Table = {{ $n.Package }}.{{ $e.TableConstant }}
step.Edge.Columns = append(step.Edge.Columns, {{ if $e.M2M }}{{ $n.Package }}.{{ $e.PKConstant }}...{{ else }}{{ $n.Package }}.{{ $e.ColumnConstant }}{{ end }})
step := sql.NewStep(
sql.From({{ $n.Package }}.Table, {{ $n.Package }}.{{ $n.ID.Constant }}, {{ $receiver }}.sqlQuery()),
sql.To({{ $e.Type.Package }}.Table, {{ $e.Type.Package }}.{{ $e.Type.ID.Constant }}),
sql.Edge(sql.{{ $e.Rel.Type }}, {{ $e.IsInverse }}, {{ $n.Package }}.{{ $e.TableConstant }},
{{- if $e.M2M -}}
{{ $n.Package }}.{{ $e.PKConstant }}...
{{- else -}}
{{ $n.Package }}.{{ $e.ColumnConstant }}
{{- end -}}
),
)
query.sql = sql.SetNeighbors({{ $receiver }}.driver.Dialect(), step)
{{ end }}