influxdb/pkg/jsonparser/jsonparser.go

46 lines
1.0 KiB
Go

package jsonparser
import (
"github.com/buger/jsonparser"
"github.com/influxdata/influxdb/v2/kit/platform"
)
// GetID returns an influxdb.ID for the specified keys path or an error if
// the value cannot be decoded or does not exist.
func GetID(data []byte, keys ...string) (val platform.ID, err error) {
v, _, _, err := jsonparser.Get(data, keys...)
if err != nil {
return 0, err
}
var id platform.ID
err = id.Decode(v)
if err != nil {
return 0, err
}
return id, nil
}
// GetOptionalID returns an influxdb.ID for the specified keys path or an error if
// the value cannot be decoded. The value of exists will be false if the keys path
// does not exist.
func GetOptionalID(data []byte, keys ...string) (val platform.ID, exists bool, err error) {
v, typ, _, err := jsonparser.Get(data, keys...)
if typ == jsonparser.NotExist {
return 0, false, nil
}
if err != nil {
return 0, false, err
}
var id platform.ID
err = id.Decode(v)
if err != nil {
return 0, false, err
}
return id, true, nil
}