mirror of
https://github.com/ent/ent.git
synced 2026-05-24 09:31:56 +03:00
ent/entc: configure storage driver in codegen
Summary: Pull Request resolved: https://github.com/facebookexternal/fbc/pull/1229 Reviewed By: alexsn Differential Revision: D16539934 fbshipit-source-id: b3a8bf1f1be6f65ad3f649cd921ea20fc24182bf
This commit is contained in:
committed by
Facebook Github Bot
parent
c6b178de20
commit
56656dfcb6
@@ -66,7 +66,6 @@ func ({{ $receiver }} *{{ $builder }}) sqlIDs(ctx context.Context) ([]{{ $.ID.Ty
|
||||
return ids, nil
|
||||
}
|
||||
|
||||
|
||||
func ({{ $receiver }} *{{ $builder }}) sqlQuery() *sql.Selector {
|
||||
t1 := sql.Table({{ $.Package }}.Table)
|
||||
selector := sql.Select(t1.Columns({{ $.Package }}.Columns...)...).From(t1)
|
||||
@@ -78,7 +77,7 @@ func ({{ $receiver }} *{{ $builder }}) sqlQuery() *sql.Selector {
|
||||
p(selector)
|
||||
}
|
||||
for _, p := range {{ $receiver }}.order {
|
||||
p.SQL(selector)
|
||||
p(selector)
|
||||
}
|
||||
if offset := {{ $receiver }}.offset; offset != nil {
|
||||
// limit is mandatory for offset clause. We start
|
||||
@@ -90,5 +89,75 @@ func ({{ $receiver }} *{{ $builder }}) sqlQuery() *sql.Selector {
|
||||
}
|
||||
return selector
|
||||
}
|
||||
{{ end }}
|
||||
|
||||
{{/* query/path defines the query generation for path of a given edge. */}}
|
||||
{{ define "dialect/sql/query/path" }}
|
||||
{{- $e := $.Scope.Edge }} {{/* the edge we need to genegrate the path to. */}}
|
||||
{{- $receiver := $.Scope.Receiver }}
|
||||
|
||||
{{- if $e.M2M }}
|
||||
{{ $i := 1 }}{{ $j := 0 }}{{- if $e.IsInverse }}{{ $i = 0 }}{{ $j = 1 }}{{ end -}}
|
||||
t1 := sql.Table({{ $e.Type.Package }}.Table)
|
||||
t2 := {{ $receiver }}.sqlQuery()
|
||||
t2.Select(t2.C({{ $.Package }}.{{ $.ID.Constant }}))
|
||||
t3 := sql.Table({{ $.Package }}.{{ $e.TableConstant }})
|
||||
t4 := sql.Select(t3.C({{ $.Package }}.{{ $e.PKConstant }}[{{ $i }}])).
|
||||
From(t3).
|
||||
Join(t2).
|
||||
On(t3.C({{ $.Package }}.{{ $e.PKConstant }}[{{ $j }}]), t2.C({{ $.Package }}.{{ $.ID.Constant }}))
|
||||
query.sql = sql.Select().
|
||||
From(t1).
|
||||
Join(t4).
|
||||
On(t1.C({{ $e.Type.Package }}.{{ $e.Type.ID.Constant }}), t4.C({{ $.Package }}.{{ $e.PKConstant }}[{{ $i }}]))
|
||||
{{- else if or $e.M2O (and $e.O2O $e.IsInverse) }}{{/* M2O || (O2O with inverse edge) */}}
|
||||
t1 := sql.Table({{ $e.Type.Package }}.Table)
|
||||
t2 := {{ $receiver }}.sqlQuery()
|
||||
t2.Select(t2.C({{ $.Package }}.{{ $e.ColumnConstant }}))
|
||||
query.sql = sql.Select(t1.Columns({{ $e.Type.Package }}.Columns...)...).
|
||||
From(t1).
|
||||
Join(t2).
|
||||
On(t1.C({{ $e.Type.Package }}.{{ $e.Type.ID.Constant }}), t2.C({{ $.Package }}.{{ $e.ColumnConstant }}))
|
||||
{{- else }}{{/* O2M || (O2O with assoc edge) */}}
|
||||
t1 := sql.Table({{ $e.Type.Package }}.Table)
|
||||
t2 := {{ $receiver }}.sqlQuery()
|
||||
t2.Select(t2.C({{ $.Package }}.{{ $.ID.Constant }}))
|
||||
query.sql = sql.Select().
|
||||
From(t1).
|
||||
Join(t2).
|
||||
On(t1.C({{ $.Package }}.{{ $e.ColumnConstant }}), t2.C({{ $.Package }}.{{ $.ID.Constant }}))
|
||||
{{- end }}
|
||||
{{ end }}
|
||||
|
||||
{{/* query/from defines the query generation for an edge query from a given node. */}}
|
||||
{{ define "dialect/sql/query/from" }}
|
||||
{{- $n := $ }} {{/* the node we start the query from. */}}
|
||||
{{- $e := $.Scope.Edge }} {{/* the edge we need to genegrate the path to. */}}
|
||||
{{- $receiver := $.Scope.Receiver -}}
|
||||
|
||||
id := {{ $receiver }}.{{- if $n.ID.IsString }}id(){{ else }}ID{{ end }}
|
||||
{{- if $e.M2M }}
|
||||
{{ $i := 1 }}{{ $j := 0 }}{{- if $e.IsInverse }}{{ $i = 0 }}{{ $j = 1 }}{{ end -}}
|
||||
t1 := sql.Table({{ $e.Type.Package }}.Table)
|
||||
t2 := sql.Table({{ $n.Package }}.Table)
|
||||
t3 := sql.Table({{ $n.Package }}.{{ $e.TableConstant }})
|
||||
t4 := sql.Select(t3.C({{ $n.Package }}.{{ $e.PKConstant }}[{{ $i }}])).
|
||||
From(t3).
|
||||
Join(t2).
|
||||
On(t3.C({{ $n.Package }}.{{ $e.PKConstant }}[{{ $j }}]), t2.C({{ $n.Package }}.{{ $n.ID.Constant }})).
|
||||
Where(sql.EQ(t2.C({{ $n.Package }}.{{ $n.ID.Constant }}), id))
|
||||
query.sql = sql.Select().
|
||||
From(t1).
|
||||
Join(t4).
|
||||
On(t1.C({{ $e.Type.Package }}.{{ $e.Type.ID.Constant }}), t4.C({{ $n.Package }}.{{ $e.PKConstant }}[{{ $i }}]))
|
||||
{{- else if or $e.M2O (and $e.O2O $e.IsInverse) }}{{/* M2O || (O2O with inverse edge) */}}
|
||||
t1 := sql.Table({{ $e.Type.Package }}.Table)
|
||||
t2 := sql.Select({{ $n.Package }}.{{ $e.ColumnConstant }}).
|
||||
From(sql.Table({{ $n.Package }}.{{ $e.TableConstant }})).
|
||||
Where(sql.EQ({{ $n.Package }}.{{ $n.ID.Constant }}, id))
|
||||
query.sql = sql.Select().From(t1).Join(t2).On(t1.C({{ $e.Type.Package }}.{{ $e.Type.ID.Constant }}), t2.C({{ $n.Package }}.{{ $e.ColumnConstant }}))
|
||||
{{- else }}{{/* O2M || (O2O with assoc edge) */}}
|
||||
query.sql = sql.Select().From(sql.Table({{ $e.Type.Package }}.Table)).
|
||||
Where(sql.EQ({{ $n.Package }}.{{ $e.ColumnConstant }}, id))
|
||||
{{- end }}
|
||||
{{ end }}
|
||||
Reference in New Issue
Block a user