func()

in algorithm/eas/easyrec/easyrec_request_builder.go [244:393]


func (b *EasyrecRequestBuilder) AddContextFeature(key string, features []interface{}) {
	contextFeatures := &ContextFeatures{
		Features: make([]*PBFeature, 0),
	}

	for _, f := range features {
		switch val := f.(type) {
		case float32:
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_FloatFeature{val}})
		case int32:
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_IntFeature{val}})
		case int:
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_IntFeature{int32(val)}})
		case int64:
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_LongFeature{val}})
		case float64:
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_DoubleFeature{val}})
		case string:
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_StringFeature{val}})
		case map[int64]string:
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_LongStringMap{LongStringMap: &LongStringMap{MapField: val}}})
		case map[int64]int32:
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_LongIntMap{LongIntMap: &LongIntMap{MapField: val}}})
		case map[int64]int:
			values := make(map[int64]int32, len(val))
			for k, v := range val {
				values[k] = int32(v)
			}
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_LongIntMap{LongIntMap: &LongIntMap{MapField: values}}})
		case map[int64]int64:
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_LongLongMap{LongLongMap: &LongLongMap{MapField: val}}})
		case map[int64]float32:
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_LongFloatMap{LongFloatMap: &LongFloatMap{MapField: val}}})
		case map[int64]float64:
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_LongDoubleMap{LongDoubleMap: &LongDoubleMap{MapField: val}}})
		case map[string]string:
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_StringStringMap{StringStringMap: &StringStringMap{MapField: val}}})
		case map[string]int32:
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_StringIntMap{StringIntMap: &StringIntMap{MapField: val}}})
		case map[string]int:
			values := make(map[string]int32, len(val))
			for k, v := range val {
				values[k] = int32(v)
			}
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_StringIntMap{StringIntMap: &StringIntMap{MapField: values}}})
		case map[string]int64:
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_StringLongMap{StringLongMap: &StringLongMap{MapField: val}}})
		case map[string]float32:
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_StringFloatMap{StringFloatMap: &StringFloatMap{MapField: val}}})
		case map[string]float64:
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_StringDoubleMap{StringDoubleMap: &StringDoubleMap{MapField: val}}})
		case map[int32]string:
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_IntStringMap{IntStringMap: &IntStringMap{MapField: val}}})
		case map[int32]int32:
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_IntIntMap{IntIntMap: &IntIntMap{MapField: val}}})
		case map[int32]int64:
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_IntLongMap{IntLongMap: &IntLongMap{MapField: val}}})
		case map[int32]float32:
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_IntFloatMap{IntFloatMap: &IntFloatMap{MapField: val}}})
		case map[int32]float64:
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_IntDoubleMap{IntDoubleMap: &IntDoubleMap{MapField: val}}})
		case map[int]string:
			values := make(map[int32]string, len(val))
			for k, v := range val {
				values[int32(k)] = v
			}
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_IntStringMap{IntStringMap: &IntStringMap{MapField: values}}})
		case map[int]int32:
			values := make(map[int32]int32, len(val))
			for k, v := range val {
				values[int32(k)] = v
			}
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_IntIntMap{IntIntMap: &IntIntMap{MapField: values}}})
		case map[int]int:
			values := make(map[int32]int32, len(val))
			for k, v := range val {
				values[int32(k)] = int32(v)
			}
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_IntIntMap{IntIntMap: &IntIntMap{MapField: values}}})
		case map[int]int64:
			values := make(map[int32]int64, len(val))
			for k, v := range val {
				values[int32(k)] = v
			}
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_IntLongMap{IntLongMap: &IntLongMap{MapField: values}}})
		case map[int]float32:
			values := make(map[int32]float32, len(val))
			for k, v := range val {
				values[int32(k)] = v
			}
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_IntFloatMap{IntFloatMap: &IntFloatMap{MapField: values}}})
		case map[int]float64:
			values := make(map[int32]float64, len(val))
			for k, v := range val {
				values[int32(k)] = v
			}
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_IntDoubleMap{IntDoubleMap: &IntDoubleMap{MapField: values}}})
		case []int32:
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_IntList{IntList: &IntList{Features: val}}})
		case []int:
			values := make([]int32, len(val))
			for i, v := range val {
				values[i] = int32(v)
			}
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_IntList{IntList: &IntList{Features: values}}})
		case []int64:
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_LongList{LongList: &LongList{Features: val}}})
		case []string:
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_StringList{StringList: &StringList{Features: val}}})
		case []float32:
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_FloatList{FloatList: &FloatList{Features: val}}})
		case []float64:
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_DoubleList{DoubleList: &DoubleList{Features: val}}})
		case [][]int32:
			values := make([]*IntList, len(val))
			for i, v := range val {
				values[i] = &IntList{Features: v}
			}
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_IntLists{IntLists: &IntLists{Lists: values}}})
		case [][]int64:
			values := make([]*LongList, len(val))
			for i, v := range val {
				values[i] = &LongList{Features: v}
			}
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_LongLists{LongLists: &LongLists{Lists: values}}})
		case [][]string:
			values := make([]*StringList, len(val))
			for i, v := range val {
				values[i] = &StringList{Features: v}
			}
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_StringLists{StringLists: &StringLists{Lists: values}}})
		case [][]float32:
			values := make([]*FloatList, len(val))
			for i, v := range val {
				values[i] = &FloatList{Features: v}
			}
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_FloatLists{FloatLists: &FloatLists{Lists: values}}})
		case [][]float64:
			values := make([]*DoubleList, len(val))
			for i, v := range val {
				values[i] = &DoubleList{Features: v}
			}
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_DoubleLists{DoubleLists: &DoubleLists{Lists: values}}})
		default:
			contextFeatures.Features = append(contextFeatures.Features, &PBFeature{Value: &PBFeature_StringFeature{""}})
		}
	}

	b.request.ContextFeatures[key] = contextFeatures
}