schema/field: json type support (#38)

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

Only `IsNil` and `NotNil` predicates are supported this moment

Reviewed By: alexsn

Differential Revision: D17444976

fbshipit-source-id: 37336fa0bc7749af995933baee2e23bb7366dd78
This commit is contained in:
Ariel Mashraki
2019-09-19 04:58:21 -07:00
committed by Facebook Github Bot
parent 83d0063437
commit c3955a08f1
214 changed files with 4005 additions and 1296 deletions

View File

@@ -19,9 +19,17 @@ func ({{ $receiver }} *{{ $builder }}) sqlSave(ctx context.Context) (*{{ $.Name
}
builder := sql.Insert({{ $.Package }}.Table).Default({{ $receiver }}.driver.Dialect())
{{- range $_, $f := $.Fields }}
if {{ $receiver }}.{{- $f.StructField }} != nil {
builder.Set({{ $.Package }}.{{ $f.Constant }}, *{{ $receiver }}.{{ $f.StructField }})
{{ $.Receiver }}.{{ pascal $f.Name }} = {{ if not $f.Nillable }}*{{ end }}{{ $receiver }}.{{ $f.StructField }}
if value := {{ $receiver }}.{{- $f.StructField }}; value != nil {
{{- if $f.IsJSON }}
buf, err := json.Marshal(*value)
if err != nil {
return nil, err
}
builder.Set({{ $.Package }}.{{ $f.Constant }}, buf)
{{- else }}
builder.Set({{ $.Package }}.{{ $f.Constant }}, *value)
{{- end }}
{{ $.Receiver }}.{{ pascal $f.Name }} = {{ if not $f.Nillable }}*{{ end }}value
}
{{- end }}
query, args := builder.Query()