Files
ent/entc/gen/template/predicate.tmpl
Ariel Mashraki 56656dfcb6 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
2019-07-30 02:49:22 -07:00

32 lines
922 B
Cheetah

{{ define "predicate" }}
{{ template "header" "predicate" }}
import (
"fmt"
"fbc/ent/dialect/gremlin/graph/dsl"
"fbc/ent/dialect/sql"
)
{{ range $_, $n := $.Nodes -}}
// {{ $n.Name }} is the predicate function for {{ $n.Package }} builders.
type {{ $n.Name }} func({{ if gt (len $.Storage) 1 }}interface{}{{ else }}{{ (index $.Storage 0).Builder }}{{ end }})
{{ if gt (len $.Storage) 1 }}
// {{ $n.Name }}PerDialect construct a predicate for graph traversals based on dialect type.
func {{ $n.Name }}PerDialect({{ range $i, $storage := $.Storage }}{{ if $i }},{{ end }}f{{ $i }} func({{ $storage.Builder }}){{ end }}) {{ $n.Name }} {
return {{ $n.Name }}(func (v interface{}) {
switch v := v.(type) {
{{- range $i, $storage := $.Storage }}
case {{ $storage.Builder }}:
f{{ $i }}(v)
{{- end }}
default:
panic(fmt.Sprintf("unknown type for predicate: %T", v))
}
})
}
{{ end }}
{{ end }}
{{ end }}