| 177 | } |
| 178 | |
| 179 | func parseJSONArray(str string, t enumspb.IndexedValueType) (any, error) { |
| 180 | switch t { |
| 181 | case enumspb.INDEXED_VALUE_TYPE_TEXT, |
| 182 | enumspb.INDEXED_VALUE_TYPE_KEYWORD, |
| 183 | enumspb.INDEXED_VALUE_TYPE_KEYWORD_LIST: |
| 184 | var result []string |
| 185 | err := json.Unmarshal([]byte(str), &result) |
| 186 | return result, err |
| 187 | case enumspb.INDEXED_VALUE_TYPE_INT: |
| 188 | var result []int64 |
| 189 | err := json.Unmarshal([]byte(str), &result) |
| 190 | return result, err |
| 191 | case enumspb.INDEXED_VALUE_TYPE_DOUBLE: |
| 192 | var result []float64 |
| 193 | err := json.Unmarshal([]byte(str), &result) |
| 194 | return result, err |
| 195 | case enumspb.INDEXED_VALUE_TYPE_BOOL: |
| 196 | var result []bool |
| 197 | err := json.Unmarshal([]byte(str), &result) |
| 198 | return result, err |
| 199 | case enumspb.INDEXED_VALUE_TYPE_DATETIME: |
| 200 | var result []time.Time |
| 201 | err := json.Unmarshal([]byte(str), &result) |
| 202 | return result, err |
| 203 | case enumspb.INDEXED_VALUE_TYPE_UNSPECIFIED: |
| 204 | var result []any |
| 205 | err := json.Unmarshal([]byte(str), &result) |
| 206 | return result, err |
| 207 | default: |
| 208 | return nil, fmt.Errorf("%w: %v", sadefs.ErrInvalidType, t) |
| 209 | } |
| 210 | } |