in sources/cassandra/validations/validation/validation.go [463:514]
func compareValues(v1, v2 interface{}) bool {
// Handle nil values
if v1 == nil && v2 == nil {
return true
}
if v1 == nil || v2 == nil {
return false
}
// Compare different types of values
switch val1 := v1.(type) {
case []byte:
if val2, ok := v2.([]byte); ok {
if len(val1) != len(val2) {
return false
}
for i := range val1 {
if val1[i] != val2[i] {
return false
}
}
return true
}
case map[string]interface{}:
if val2, ok := v2.(map[string]interface{}); ok {
if len(val1) != len(val2) {
return false
}
for k, v := range val1 {
if !compareValues(v, val2[k]) {
return false
}
}
return true
}
case []interface{}:
if val2, ok := v2.([]interface{}); ok {
if len(val1) != len(val2) {
return false
}
for i := range val1 {
if !compareValues(val1[i], val2[i]) {
return false
}
}
return true
}
}
// For other types, use simple equality
return fmt.Sprintf("%v", v1) == fmt.Sprintf("%v", v2)
}