Skip to content

Commit 3088e1c

Browse files
committed
Add Value method to VisibilityValue
1 parent dd33b53 commit 3088e1c

File tree

2 files changed

+50
-1
lines changed

2 files changed

+50
-1
lines changed

chasm/search_attribute.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,8 @@ func (s SearchAttributeBool) Value(value bool) SearchAttributeKeyValue {
223223

224224
func (s SearchAttributeBool) typeMarker(_ bool) {}
225225

226+
func (s SearchAttributeBool) visibilityValueMarker(v VisibilityValueBool) {}
227+
226228
// SearchAttributeDateTime is a search attribute for a datetime value.
227229
type SearchAttributeDateTime struct {
228230
searchAttributeDefinition
@@ -260,6 +262,8 @@ func (s SearchAttributeDateTime) Value(value time.Time) SearchAttributeKeyValue
260262

261263
func (s SearchAttributeDateTime) typeMarker(_ time.Time) {}
262264

265+
func (s SearchAttributeDateTime) visibilityValueMarker(v VisibilityValueTime) {}
266+
263267
// SearchAttributeInt is a search attribute for an integer value.
264268
type SearchAttributeInt struct {
265269
searchAttributeDefinition
@@ -297,6 +301,8 @@ func (s SearchAttributeInt) Value(value int64) SearchAttributeKeyValue {
297301

298302
func (s SearchAttributeInt) typeMarker(_ int64) {}
299303

304+
func (s SearchAttributeInt) visibilityValueMarker(v VisibilityValueInt64) {}
305+
300306
// SearchAttributeDouble is a search attribute for a double value.
301307
type SearchAttributeDouble struct {
302308
searchAttributeDefinition
@@ -334,6 +340,8 @@ func (s SearchAttributeDouble) Value(value float64) SearchAttributeKeyValue {
334340

335341
func (s SearchAttributeDouble) typeMarker(_ float64) {}
336342

343+
func (s SearchAttributeDouble) visibilityValueMarker(v VisibilityValueFloat64) {}
344+
337345
// SearchAttributeKeyword is a search attribute for a keyword value.
338346
type SearchAttributeKeyword struct {
339347
searchAttributeDefinition
@@ -371,6 +379,8 @@ func (s SearchAttributeKeyword) Value(value string) SearchAttributeKeyValue {
371379

372380
func (s SearchAttributeKeyword) typeMarker(_ string) {}
373381

382+
func (s SearchAttributeKeyword) visibilityValueMarker(v VisibilityValueString) {}
383+
374384
// SearchAttributeKeywordList is a search attribute for a keyword list value.
375385
type SearchAttributeKeywordList struct {
376386
searchAttributeDefinition
@@ -408,6 +418,8 @@ func (s SearchAttributeKeywordList) Value(value []string) SearchAttributeKeyValu
408418

409419
func (s SearchAttributeKeywordList) typeMarker(_ []string) {}
410420

421+
func (s SearchAttributeKeywordList) visibilityValueMarker(v VisibilityValueStringSlice) {}
422+
411423
// SearchAttributesMap wraps search attribute values with type-safe access.
412424
type SearchAttributesMap struct {
413425
values map[string]VisibilityValue
@@ -434,7 +446,7 @@ func GetValue[T any](m SearchAttributesMap, sa typedSearchAttribute[T]) (val T,
434446
return zero, false
435447
}
436448

437-
finalVal, ok := visibilityValue.(T)
449+
finalVal, ok := visibilityValue.Value().(T)
438450
if !ok {
439451
return zero, false
440452
}

chasm/visibility_value.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
type VisibilityValue interface {
1414
MustEncode() *commonpb.Payload
1515
Equal(VisibilityValue) bool
16+
Value() any
1617
}
1718

1819
type VisibilityValueInt int
@@ -31,6 +32,10 @@ func (v VisibilityValueInt) Equal(other VisibilityValue) bool {
3132
return v == ov
3233
}
3334

35+
func (v VisibilityValueInt) Value() any {
36+
return int(v)
37+
}
38+
3439
type VisibilityValueInt32 int32
3540

3641
func (v VisibilityValueInt32) MustEncode() *commonpb.Payload {
@@ -47,6 +52,10 @@ func (v VisibilityValueInt32) Equal(other VisibilityValue) bool {
4752
return v == ov
4853
}
4954

55+
func (v VisibilityValueInt32) Value() any {
56+
return int32(v)
57+
}
58+
5059
type VisibilityValueInt64 int64
5160

5261
func (v VisibilityValueInt64) MustEncode() *commonpb.Payload {
@@ -63,6 +72,10 @@ func (v VisibilityValueInt64) Equal(other VisibilityValue) bool {
6372
return v == ov
6473
}
6574

75+
func (v VisibilityValueInt64) Value() any {
76+
return int64(v)
77+
}
78+
6679
type VisibilityValueString string
6780

6881
func (v VisibilityValueString) MustEncode() *commonpb.Payload {
@@ -79,6 +92,10 @@ func (v VisibilityValueString) Equal(other VisibilityValue) bool {
7992
return v == ov
8093
}
8194

95+
func (v VisibilityValueString) Value() any {
96+
return string(v)
97+
}
98+
8299
type VisibilityValueBool bool
83100

84101
func (v VisibilityValueBool) MustEncode() *commonpb.Payload {
@@ -95,6 +112,10 @@ func (v VisibilityValueBool) Equal(other VisibilityValue) bool {
95112
return v == ov
96113
}
97114

115+
func (v VisibilityValueBool) Value() any {
116+
return bool(v)
117+
}
118+
98119
type VisibilityValueFloat64 float64
99120

100121
func (v VisibilityValueFloat64) MustEncode() *commonpb.Payload {
@@ -111,6 +132,10 @@ func (v VisibilityValueFloat64) Equal(other VisibilityValue) bool {
111132
return v == ov
112133
}
113134

135+
func (v VisibilityValueFloat64) Value() any {
136+
return float64(v)
137+
}
138+
114139
type VisibilityValueTime time.Time
115140

116141
func (v VisibilityValueTime) MustEncode() *commonpb.Payload {
@@ -127,6 +152,10 @@ func (v VisibilityValueTime) Equal(other VisibilityValue) bool {
127152
return time.Time(v).Equal(time.Time(ov))
128153
}
129154

155+
func (v VisibilityValueTime) Value() any {
156+
return time.Time(v)
157+
}
158+
130159
type VisibilityValueByteSlice []byte
131160

132161
func (v VisibilityValueByteSlice) MustEncode() *commonpb.Payload {
@@ -141,6 +170,10 @@ func (v VisibilityValueByteSlice) Equal(other VisibilityValue) bool {
141170
return slices.Equal(v, ov)
142171
}
143172

173+
func (v VisibilityValueByteSlice) Value() any {
174+
return []byte(v)
175+
}
176+
144177
type VisibilityValueStringSlice []string
145178

146179
func (v VisibilityValueStringSlice) MustEncode() *commonpb.Payload {
@@ -157,6 +190,10 @@ func (v VisibilityValueStringSlice) Equal(other VisibilityValue) bool {
157190
return slices.Equal(v, ov)
158191
}
159192

193+
func (v VisibilityValueStringSlice) Value() any {
194+
return []string(v)
195+
}
196+
160197
func isVisibilityValueEqual(v1, v2 VisibilityValue) bool {
161198
if v1 == nil && v2 == nil {
162199
return true

0 commit comments

Comments
 (0)