File: select.tmpl

package info (click to toggle)
golang-github-facebook-ent 0.5.4-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 14,284 kB
  • sloc: javascript: 349; makefile: 8
file content (42 lines) | stat: -rw-r--r-- 1,199 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
{{/*
Copyright 2019-present Facebook Inc. All rights reserved.
This source code is licensed under the Apache 2.0 license found
in the LICENSE file in the root directory of this source tree.
*/}}

{{ define "dialect/gremlin/select" }}
{{ $builder := pascal $.Scope.Builder }}
{{ $receiver := receiver $builder }}

func ({{ $receiver }} *{{ $builder }}) gremlinScan(ctx context.Context, v interface{}) error {
	var (
		traversal *dsl.Traversal
		res = &gremlin.Response{}
	)
	if len({{ $receiver }}.fields) == 1 {
		if {{ $receiver }}.fields[0] != {{ $.Package }}.FieldID {
			traversal = {{ $receiver }}.gremlin.Values({{ $receiver }}.fields...)
		} else {
			traversal = {{ $receiver }}.gremlin.ID()
		}
	} else {
		fields := make([]interface{}, len({{ $receiver }}.fields))
		for i, f := range {{ $receiver }}.fields {
			fields[i] = f
		}
		traversal = {{ $receiver }}.gremlin.ValueMap(fields...)
	}
	query, bindings := traversal.Query()
	if err := {{ $receiver }}.driver.Exec(ctx, query, bindings, res); err != nil {
		return err
	}
	if len({{ $receiver }}.fields) == 1 {
		return res.ReadVal(v)
	}
	vm, err := res.ReadValueMap()
	if err != nil {
		return err
	}
	return vm.Decode(v)
}
{{ end }}