43 lines
980 B
Go
43 lines
980 B
Go
|
// Copyright 2012-present Oliver Eilhard. All rights reserved.
|
||
|
// Use of this source code is governed by a MIT-license.
|
||
|
// See http://olivere.mit-license.org/license.txt for details.
|
||
|
|
||
|
package elastic
|
||
|
|
||
|
// DocvalueField represents a docvalue field, its name and
|
||
|
// its format (optional).
|
||
|
type DocvalueField struct {
|
||
|
Field string
|
||
|
Format string
|
||
|
}
|
||
|
|
||
|
// Source serializes the DocvalueField into JSON.
|
||
|
func (d DocvalueField) Source() (interface{}, error) {
|
||
|
if d.Format == "" {
|
||
|
return d.Field, nil
|
||
|
}
|
||
|
return map[string]interface{}{
|
||
|
"field": d.Field,
|
||
|
"format": d.Format,
|
||
|
}, nil
|
||
|
}
|
||
|
|
||
|
// DocvalueFields is a slice of DocvalueField instances.
|
||
|
type DocvalueFields []DocvalueField
|
||
|
|
||
|
// Source serializes the DocvalueFields into JSON.
|
||
|
func (d DocvalueFields) Source() (interface{}, error) {
|
||
|
if d == nil {
|
||
|
return nil, nil
|
||
|
}
|
||
|
v := make([]interface{}, 0)
|
||
|
for _, f := range d {
|
||
|
src, err := f.Source()
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
v = append(v, src)
|
||
|
}
|
||
|
return v, nil
|
||
|
}
|