| 87 | } |
| 88 | |
| 89 | func (i *Identity) MarkFieldAsTokenized(fieldName string) { |
| 90 | if i.MetaData == nil { |
| 91 | i.MetaData = make(map[string]interface{}) |
| 92 | } |
| 93 | |
| 94 | structFieldName := convertToStructFieldName(fieldName) |
| 95 | |
| 96 | existingTokenizedFields := make(map[string]bool) |
| 97 | |
| 98 | // First check if tokenized_fields exists and what type it is |
| 99 | if tokenizedFieldsRaw, exists := i.MetaData["tokenized_fields"]; exists { |
| 100 | // Try to cast to map[string]bool |
| 101 | if tokenizedMap, ok := tokenizedFieldsRaw.(map[string]bool); ok { |
| 102 | for field, isTokenized := range tokenizedMap { |
| 103 | existingTokenizedFields[field] = isTokenized |
| 104 | } |
| 105 | } else if tokenizedMap, ok := tokenizedFieldsRaw.(map[string]interface{}); ok { |
| 106 | // Handle map[string]interface{} case (common when unmarshalled from JSON) |
| 107 | for field, val := range tokenizedMap { |
| 108 | if boolVal, ok := val.(bool); ok { |
| 109 | existingTokenizedFields[field] = boolVal |
| 110 | } |
| 111 | } |
| 112 | } |
| 113 | } |
| 114 | |
| 115 | existingTokenizedFields[structFieldName] = true |
| 116 | i.MetaData["tokenized_fields"] = existingTokenizedFields |
| 117 | } |