# Functions
No description provided by the author
No description provided by the author
No description provided by the author
func returnAQLObjectBuilderBk(_var string, _pv string, nestedMedia bool, _map map[string]*FieldDetails) ([]string, string, error) {
var vals []string
for k, v := range _map {
if v.Value != nil {
switch v.FieldType {
case "repeated":
if !contains([]string{"data", "meta", "created_by", "last_modified_by"}, k) { // skip for data object
_nestedVar := utility.RandomVariableGenerator(4)
_returns, _pvr, err := returnAQLObjectBuilderBk(_nestedVar, _pv, false, v.Value.(map[string]*FieldDetails))
if err != nil {
return nil, "", err
}
vals = append(vals, fmt.Sprintf(`"%s" : ( FOR %s in NOT_NULL(%s) ? %s : [] RETURN { %s } )`, k, _nestedVar, _pvr, _pvr, strings.Join(_returns, ", ")))
} else {
_returns, _, err := returnAQLObjectBuilderBk(_var, _pv, false, v.Value.(map[string]*FieldDetails))
if err != nil {
return nil, "", err
}
vals = append(vals, fmt.Sprintf(`"%s" : { %s }`, k, strings.Join(_returns, ", ")))
}
break
case "media", "multiline", "geo":
if v.Validation != nil && v.Validation.IsGallery { // multiple media is an array
_nestedVar := utility.RandomVariableGenerator(4)
_returns, _pvr, err := returnAQLObjectBuilderBk(_nestedVar, _pv, false, v.Value.(map[string]*FieldDetails))
if err != nil {
return nil, "", err
}
vals = append(vals, fmt.Sprintf(`"%s" : ( FOR %s in NOT_NULL(%s) ? %s : [] RETURN { %s } )`, k, _nestedVar, _pvr, _pvr, strings.Join(_returns, ", ")))
} else {
_returns, _pvr, err := returnAQLObjectBuilderBk(_var, _pv, true, v.Value.(map[string]*FieldDetails))
if err != nil {
return nil, "", err
}
_pv = _pvr
vals = append(vals, fmt.Sprintf(`"%s" : { %s }`, k, strings.Join(_returns, ", ")))
}
break
default:
if _var == "" {
vals = append(vals, fmt.Sprintf(`"%s" : %s`, k, v.Value.(string)))
} else if nestedMedia { // media in repeated field
if val, ok := v.Value.(string); ok {
splits := strings.Split(val, ".")
end := strings.Join(splits[len(splits)-2:len(splits)], ".")
vals = append(vals, fmt.Sprintf(`"%s" : %s.%s`, k, _var, end))
start := strings.Join(splits[:len(splits)-2], ".")
_pv = start
}
} else {
if val, ok := v.Value.(string); ok {
splitAt := strings.LastIndex(val, ".")
vals = append(vals, fmt.Sprintf(`"%s" : %s.%s`, k, _var, val[splitAt+1:len(val)]))
_pv = val[:splitAt]
}
}
}
}
}
return vals, _pv, nil
}
*/.
No description provided by the author
No description provided by the author