entc/gen: generate sql builders with dialect option

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

Reviewed By: alexsn

Differential Revision: D18164397

fbshipit-source-id: 2858d69d3ff85c06b51382c01c3d4369ee2c3bdb
This commit is contained in:
Ariel Mashraki
2019-10-27 21:52:31 -07:00
committed by Facebook Github Bot
parent ea479ea527
commit c259aee24b
241 changed files with 3899 additions and 2394 deletions

View File

@@ -64,10 +64,12 @@ in the LICENSE file in the root directory of this source tree.
func(s *sql.Selector) {
{{- if $e.M2M }}
t1 := s.Table()
builder := sql.Dialect(s.Dialect())
s.Where(
sql.In(
t1.C({{ $.ID.Constant }}),
sql.Select({{ $e.PKConstant }}[{{ if $e.IsInverse }}1{{ else }}0{{ end }}]).From(sql.Table({{ $e.TableConstant }})),
builder.Select({{ $e.PKConstant }}[{{ if $e.IsInverse }}1{{ else }}0{{ end }}]).
From(builder.Table({{ $e.TableConstant }})),
),
)
{{- else if or $e.M2O (and $e.O2O $e.IsInverse) }}{{/* M2O || (O2O with inverse edge) */}}
@@ -75,11 +77,12 @@ in the LICENSE file in the root directory of this source tree.
s.Where(sql.NotNull(t1.C({{ $e.ColumnConstant }})))
{{- else }}{{/* O2M || (O2O with assoc edge) */}}
t1 := s.Table()
builder := sql.Dialect(s.Dialect())
s.Where(
sql.In(
t1.C({{ $.ID.Constant }}),
sql.Select({{ $e.ColumnConstant }}).
From(sql.Table({{ $e.TableConstant }})).
builder.Select({{ $e.ColumnConstant }}).
From(builder.Table({{ $e.TableConstant }})).
Where(sql.NotNull({{ $e.ColumnConstant }})),
),
)
@@ -92,28 +95,30 @@ in the LICENSE file in the root directory of this source tree.
func(s *sql.Selector) {
{{- if $e.M2M }}
{{ $i := 1 }}{{ $j := 0 }}{{- if $e.IsInverse }}{{ $i = 0 }}{{ $j = 1 }}{{ end -}}
builder := sql.Dialect(s.Dialect())
t1 := s.Table()
t2 := sql.Table(
t2 := builder.Table(
{{- if ne $.Table $e.Type.Table -}}
{{ $e.InverseTableConstant }}
{{- else -}}
Table
{{- end -}}
)
t3 := sql.Table({{ $e.TableConstant }})
t4 := sql.Select(t3.C({{ $e.PKConstant }}[{{ $j }}])).
t3 := builder.Table({{ $e.TableConstant }})
t4 := builder.Select(t3.C({{ $e.PKConstant }}[{{ $j }}])).
From(t3).
Join(t2).
On(t3.C({{ $e.PKConstant }}[{{ $i }}]), t2.C({{ $e.Type.ID.Constant }}))
t5 := sql.Select().From(t2)
t5 := builder.Select().From(t2)
for _, p := range preds {
p(t5)
}
t4.FromSelect(t5)
s.Where(sql.In(t1.C({{ $.ID.Constant }}), t4))
{{- else if or $e.M2O (and $e.O2O $e.IsInverse) }}{{/* M2O || (O2O with inverse edge) */}}
builder := sql.Dialect(s.Dialect())
t1 := s.Table()
t2 := sql.Select({{ $e.Type.ID.Constant }}).From(sql.Table(
t2 := builder.Select({{ $e.Type.ID.Constant }}).From(builder.Table(
{{- if ne $.Table $e.Type.Table -}}
{{ $e.InverseTableConstant }}
{{- else -}}
@@ -125,8 +130,9 @@ in the LICENSE file in the root directory of this source tree.
}
s.Where(sql.In(t1.C({{ $e.ColumnConstant }}), t2))
{{- else }}{{/* O2M || (O2O with assoc edge) */}}
builder := sql.Dialect(s.Dialect())
t1 := s.Table()
t2 := sql.Select({{ $e.ColumnConstant }}).From(sql.Table({{ $e.TableConstant }}))
t2 := builder.Select({{ $e.ColumnConstant }}).From(builder.Table({{ $e.TableConstant }}))
for _, p := range preds {
p(t2)
}