set_not_nil.tmpl 1.2 KB

1234567891011121314151617181920212223242526272829303132
  1. {{/*
  2. Copyright 2022-present Ryan SU (github.com/suyuan32). All rights reserved.
  3. This source code is licensed under the Apache 2.0 license found
  4. in the LICENSE file in the root directory of this source tree.
  5. */}}
  6. {{/* gotype: entgo.io/ent/entc/gen.Graph */}}
  7. {{ define "set_not_nil" }}
  8. {{/* Add the base header for the generated file */}}
  9. {{ $pkg := base $.Config.Package }}
  10. {{ template "header" $ }}
  11. {{/* Loop over all updaters and implement the "SetNotNil" method for all optional fields */}}
  12. {{ range $n := $.Nodes }}
  13. {{ range $f := $n.MutableFields }}
  14. {{ $set := print "Set" $f.StructField }}
  15. {{ range $updater := list $n.UpdateName $n.UpdateOneName $n.CreateName}}
  16. // set field if value's pointer is not nil.
  17. func ({{ $n.Receiver }} *{{ $updater }}) SetNotNil{{ $f.StructField }}(value {{if not (hasPrefix $f.Type.String "[]") }}*{{end}}{{ $f.Type }}) *{{ $updater }} {
  18. if value != nil {
  19. return {{ $n.Receiver }}.{{ $set }}({{if not (hasPrefix $f.Type.String "[]") }}*{{end}}value)
  20. }
  21. return {{ $n.Receiver }}
  22. }
  23. {{ end }}
  24. {{ end }}
  25. {{ end }}
  26. {{ end }}