entc/gen/template: remove receiver conflict handling logic (#4356)

* examples: ensure tests is stable

* entc/gen/template: remove receiver conflict handling logic

* examples: codegen

* entc/integration: codegen
This commit is contained in:
Giau. Tran Minh
2025-03-19 15:35:03 +07:00
committed by GitHub
parent 153dfa1782
commit ce61476d6d
329 changed files with 11841 additions and 11845 deletions

View File

@@ -60,17 +60,16 @@ func ({{ $receiver }} *{{ $.Name }}) assignValues(columns []string, values []any
if m, n := len(values), len(columns); m < n {
return fmt.Errorf("mismatch number of scan values: %d != %d", m, n)
}
{{- $idx := "i" }}{{ if eq $idx $receiver }}{{ $idx = "j" }}{{ end }}
for {{ $idx }} := range columns {
switch columns[{{ $idx }}] {
for i := range columns {
switch columns[i] {
{{- if $.HasOneFieldID }}
case {{ $.Package }}.{{ $.ID.Constant }}:
{{- if or $.ID.IsString $.ID.IsBytes $.ID.HasGoType }}
{{- with extend $ "Idx" $idx "Field" $.ID "Rec" $receiver }}
{{- with extend $ "Idx" "i" "Field" $.ID "Rec" $receiver }}
{{ template "dialect/sql/decode/field" . }}
{{- end }}
{{- else }}
value, ok := values[{{ $idx }}].(*sql.NullInt64)
value, ok := values[i].(*sql.NullInt64)
if !ok {
return fmt.Errorf("unexpected type %T for field id", value)
}
@@ -79,7 +78,7 @@ func ({{ $receiver }} *{{ $.Name }}) assignValues(columns []string, values []any
{{- end }}
{{- range $f := $.Fields }}
case {{ $.Package }}.{{ $f.Constant }}:
{{- with extend $ "Idx" $idx "Field" $f "Rec" $receiver }}
{{- with extend $ "Idx" "i" "Field" $f "Rec" $receiver }}
{{ template "dialect/sql/decode/field" . }}
{{- end }}
{{- end }}
@@ -87,11 +86,11 @@ func ({{ $receiver }} *{{ $.Name }}) assignValues(columns []string, values []any
{{- $f := $fk.Field }}
case {{ if $fk.UserDefined }}{{ $.Package }}.{{ $.ID.Constant }}{{ else }}{{ $.Package }}.ForeignKeys[{{ $i }}]{{ end }}:
{{- if or $fk.UserDefined (and $f.UserDefined (or $f.IsString $f.IsBytes $f.HasGoType)) }}
{{- with extend $ "Idx" $idx "Field" $f "Rec" $receiver "StructField" $fk.StructField }}
{{- with extend $ "Idx" "i" "Field" $f "Rec" $receiver "StructField" $fk.StructField }}
{{ template "dialect/sql/decode/field" . }}
{{- end }}
{{- else }}
if value, ok := values[{{ $idx }}].(*sql.NullInt64); !ok {
if value, ok := values[i].(*sql.NullInt64); !ok {
return fmt.Errorf("unexpected type %T for edge-field {{ $f.Name}}", value)
} else if value.Valid {
{{ $receiver }}.{{ $fk.StructField }} = new({{ $f.Type }})
@@ -101,7 +100,7 @@ func ({{ $receiver }} *{{ $.Name }}) assignValues(columns []string, values []any
{{- end }}
default:
{{- /* In case of no match, allow getting this value by its name. */}}
{{ $receiver }}.selectValues.Set(columns[{{ $idx }}], values[{{ $idx }}])
{{ $receiver }}.selectValues.Set(columns[i], values[i])
}
}
return nil

View File

@@ -22,7 +22,6 @@ in the LICENSE file in the root directory of this source tree.
{{ $mutation := print $receiver ".mutation" }}
{{ $one := hasSuffix $builder "One" }}
{{- $zero := 0 }}{{ if $one }}{{ $zero = "nil" }}{{ end }}
{{- $ret := "n" }}{{ if eq $ret $receiver }}{{ $ret = "_n" }}{{ end }}{{ if $one }}{{ $ret = "_node" }}{{ end }}
{{- /* Allow adding methods to the update-builder by ent extensions or user templates.*/}}
{{- with $tmpls := matchTemplate "dialect/sql/update/additional/*" }}
@@ -31,10 +30,10 @@ in the LICENSE file in the root directory of this source tree.
{{- end }}
{{- end }}
func ({{ $receiver }} *{{ $builder }}) sqlSave(ctx context.Context) ({{ $ret }} {{ if $one }}*{{ $.Name }}{{ else }}int{{ end }}, err error) {
func ({{ $receiver }} *{{ $builder }}) sqlSave(ctx context.Context) (_node {{ if $one }}*{{ $.Name }}{{ else }}int{{ end }}, err error) {
{{- if $.HasUpdateCheckers }}
if err := {{ $receiver }}.check(); err != nil {
return {{ $ret }}, err
return _node, err
}
{{- end }}
_spec := sqlgraph.NewUpdateSpec({{ $.Package }}.Table, {{ $.Package }}.Columns,
@@ -163,14 +162,14 @@ func ({{ $receiver }} *{{ $builder }}) sqlSave(ctx context.Context) ({{ $ret }}
{{- end }}
{{- end }}
{{- if $one }}
{{ $ret }} = &{{ $.Name }}{config: {{ $receiver }}.config}
_spec.Assign = {{ $ret }}.assignValues
_spec.ScanValues = {{ $ret }}.scanValues
_node = &{{ $.Name }}{config: {{ $receiver }}.config}
_spec.Assign = _node.assignValues
_spec.ScanValues = _node.scanValues
{{- end }}
{{- if $one }}
if err = sqlgraph.UpdateNode(ctx, {{ $receiver }}.driver, _spec); err != nil {
{{- else }}
if {{ $ret }}, err = sqlgraph.UpdateNodes(ctx, {{ $receiver }}.driver, _spec); err != nil {
if _node, err = sqlgraph.UpdateNodes(ctx, {{ $receiver }}.driver, _spec); err != nil {
{{- end }}
if _, ok := err.(*sqlgraph.NotFoundError); ok {
err = &NotFoundError{ {{ $.Package }}.Label}
@@ -180,7 +179,7 @@ func ({{ $receiver }} *{{ $builder }}) sqlSave(ctx context.Context) ({{ $ret }}
return {{ $zero }}, err
}
{{ $mutation }}.done = true
return {{ $ret }}, nil
return _node, nil
}
{{ end }}