go.temporal.io/server/chasm/visibility_value.go

181 LOC · 110 covered · 71 uncovered · 39 ranges · 216 concepts · 27 introducers · 143 tests

File neighbourhood

The centred file is linked to every concept that introduces one of its ranges, every test that runs code from the file, and the gray connector concepts standing between those tests and the file's own introducer concepts. Undirected links join concepts to every file where they introduce source and concepts to the tests they introduce; arrows show specialization between the displayed concepts and bridge only concepts omitted from this view. Concept colors match the source ranges below; connector concepts have no source color and are shown in gray.

Focused file, its introducer and connector concepts, their introduced files, and tests that run code from the file

In the embedded map, ordinary wheel input scrolls the page; use the visible controls to zoom and drag to pan. Open the full-screen map for canvas navigation: wheel pans, Ctrl/Command plus wheel zooms, and arrow keys pan when this region is focused. On touch screens, open the full-screen map to pan or pinch. If JavaScript or WebGL is unavailable, use the related-file, concept, and source links on this page.

Graph controls are ready.

Interactive rendering requires JavaScript and WebGL. Use the related-file, concept, and source links on this page while the interactive map is unavailable.

1 package chasm
2
3 import (
4 "fmt"
5 "slices"
6 "time"
7
8 commonpb "go.temporal.io/api/common/v1"
9 enumspb "go.temporal.io/api/enums/v1"
10 "go.temporal.io/server/common/searchattribute/sadefs"
11 )
12
13 type VisibilityValue interface {
14 MustEncode() *commonpb.Payload
15 Equal(VisibilityValue) bool
16 Value() any
17 }
18
19 type VisibilityValueInt64 int64
20
21 > func (v VisibilityValueInt64) MustEncode() *commonpb.Payload { visibility_value.go ×1
22 > return sadefs.MustEncodeValue(int64(v), enumspb.INDEXED_VALUE_TYPE_INT)
23 > }
24
25 > func (v VisibilityValueInt64) Equal(other VisibilityValue) bool { visibility_value.go ×2
26 > ov, ok := other.(VisibilityValueInt64)
27 > if !ok {
28 > return false visibility_value.go ×3
29 > }
30 > return v == ov visibility_value.go ×2
31 }
32
33 > func (v VisibilityValueInt64) Value() any { visibility_value.go ×1
34 > return int64(v)
35 > }
36
37 type VisibilityValueKeyword string
38
39 > func (v VisibilityValueKeyword) MustEncode() *commonpb.Payload { visibility_value.go ×1
40 > return sadefs.MustEncodeValue(string(v), enumspb.INDEXED_VALUE_TYPE_KEYWORD)
41 > }
42
43 > func (v VisibilityValueKeyword) Equal(other VisibilityValue) bool { visibility_value.go ×2
44 > ov, ok := other.(VisibilityValueKeyword)
45 > if !ok {
46 > return false visibility_value.go ×1
47 > }
48 > return v == ov visibility_value.go ×2
49 }
50
51 > func (v VisibilityValueKeyword) Value() any { visibility_value.go ×1
52 > return string(v)
53 > }
54
55 type VisibilityValueBool bool
56
57 > func (v VisibilityValueBool) MustEncode() *commonpb.Payload { visibility_value.go ×1
58 > return sadefs.MustEncodeValue(bool(v), enumspb.INDEXED_VALUE_TYPE_BOOL)
59 > }
60
61 > func (v VisibilityValueBool) Equal(other VisibilityValue) bool { visibility_value.go ×2
62 > ov, ok := other.(VisibilityValueBool)
63 > if !ok {
64 > return false visibility_value.go ×1
65 > }
66 > return v == ov visibility_value.go ×2
67 }
68
69 > func (v VisibilityValueBool) Value() any { visibility_value.go ×1
70 > return bool(v)
71 > }
72
73 type VisibilityValueFloat64 float64
74
75 > func (v VisibilityValueFloat64) MustEncode() *commonpb.Payload { visibility_value.go ×3
76 > return sadefs.MustEncodeValue(float64(v), enumspb.INDEXED_VALUE_TYPE_DOUBLE)
77 > }
78
79 > func (v VisibilityValueFloat64) Equal(other VisibilityValue) bool { visibility_value.go ×3
80 > ov, ok := other.(VisibilityValueFloat64)
81 > if !ok {
82 return false
83 }
84 > return v == ov visibility_value.go ×3
85 }
86
87 > func (v VisibilityValueFloat64) Value() any { visibility_value.go ×1
88 > return float64(v)
89 > }
90
91 type VisibilityValueTime time.Time
92
93 > func (v VisibilityValueTime) MustEncode() *commonpb.Payload { visibility_value.go ×1
94 > return sadefs.MustEncodeValue(time.Time(v), enumspb.INDEXED_VALUE_TYPE_DATETIME)
95 > }
96
97 > func (v VisibilityValueTime) Equal(other VisibilityValue) bool { visibility_value.go ×2
98 > ov, ok := other.(VisibilityValueTime)
99 > if !ok {
100 > return false visibility_value.go ×1
101 > }
102 > return time.Time(v).Equal(time.Time(ov)) visibility_value.go ×2
103 }
104
105 > func (v VisibilityValueTime) Value() any { visibility_value.go ×1
106 > return time.Time(v)
107 > }
108
109 type VisibilityValueStringSlice []string
110
111 > func (v VisibilityValueStringSlice) MustEncode() *commonpb.Payload { visibility_value.go ×2
112 > return sadefs.MustEncodeValue([]string(v), enumspb.INDEXED_VALUE_TYPE_KEYWORD_LIST)
113 > }
114
115 > func (v VisibilityValueStringSlice) Equal(other VisibilityValue) bool { visibility_value.go ×2
116 > ov, ok := other.(VisibilityValueStringSlice)
117 > if !ok {
118 > return false
119 > }
120 > return slices.Equal(v, ov)
121 }
122
123 > func (v VisibilityValueStringSlice) Value() any { visibility_value.go ×1
124 > return []string(v)
125 > }
126
127 > func isVisibilityValueEqual(v1, v2 VisibilityValue) bool { visibility_value.go ×3
128 > if v1 == nil && v2 == nil {
129 > return true visibility_value.go ×3
130 > }
131 > if v1 == nil || v2 == nil { visibility_value.go ×3
132 > return false visibility_value.go ×3
133 > }
134 > return v1.Equal(v2) visibility_value.go ×3
135 }
136
137 type VisibilityValueText string
138
139 > func (v VisibilityValueText) MustEncode() *commonpb.Payload { visibility_value.go ×2
140 > return sadefs.MustEncodeValue(string(v), enumspb.INDEXED_VALUE_TYPE_TEXT)
141 > }
142
143 > func (v VisibilityValueText) Equal(other VisibilityValue) bool { visibility_value.go ×2
144 > ov, ok := other.(VisibilityValueText)
145 > if !ok {
146 > return false
147 > }
148 > return v == ov
149 }
150
151 > func (v VisibilityValueText) Value() any { visibility_value.go ×1
152 > return string(v)
153 > }
154
155 // visibilityValueFromPayload decoded payload based on type set in its metadata.
156 > func visibilityValueFromPayload(payload *commonpb.Payload) (VisibilityValue, error) { search_attribute.go ×1
157 > value, err := sadefs.DecodeValue(payload, enumspb.INDEXED_VALUE_TYPE_UNSPECIFIED, false)
158 > if err != nil {
159 > return nil, err search_attribute.go ×1
160 > }
161
162 > switch t := sadefs.GetMetadataType(payload); t { search_attribute.go ×2
163 > case enumspb.INDEXED_VALUE_TYPE_BOOL:
164 > return VisibilityValueBool(value.(bool)), nil
165 > case enumspb.INDEXED_VALUE_TYPE_DATETIME: visibility_value.go ×1
166 > return VisibilityValueTime(value.(time.Time)), nil
167 > case enumspb.INDEXED_VALUE_TYPE_DOUBLE:
168 > return VisibilityValueFloat64(value.(float64)), nil
169 > case enumspb.INDEXED_VALUE_TYPE_INT:
170 > return VisibilityValueInt64(value.(int64)), nil
171 > case enumspb.INDEXED_VALUE_TYPE_KEYWORD:
172 > return VisibilityValueKeyword(value.(string)), nil
173 > case enumspb.INDEXED_VALUE_TYPE_KEYWORD_LIST:
174 > return VisibilityValueStringSlice(value.([]string)), nil
175 > case enumspb.INDEXED_VALUE_TYPE_TEXT:
176 > return VisibilityValueText(value.(string)), nil
177 default:
178 // this should never happen given that DecodeValue did not return an error
179 return nil, fmt.Errorf("unexpected metadata type %s", t)
180 }
181 }