Add errors to config methods (#2015)
This commit is contained in:
@@ -7,9 +7,9 @@ import (
|
||||
|
||||
// Config is an interface abstraction for dynamic configuration
|
||||
type Config interface {
|
||||
Get(path string, options ...Option) Value
|
||||
Set(path string, val interface{}, options ...Option)
|
||||
Delete(path string, options ...Option)
|
||||
Get(path string, options ...Option) (Value, error)
|
||||
Set(path string, val interface{}, options ...Option) error
|
||||
Delete(path string, options ...Option) error
|
||||
}
|
||||
|
||||
// Value represents a value of any type
|
||||
|
@@ -31,17 +31,17 @@ func mergeOptions(old config.Options, nu ...config.Option) config.Options {
|
||||
return n
|
||||
}
|
||||
|
||||
func (c *conf) Get(path string, options ...config.Option) config.Value {
|
||||
func (c *conf) Get(path string, options ...config.Option) (config.Value, error) {
|
||||
rec, err := c.store.Read(c.key)
|
||||
dat := []byte("{}")
|
||||
if err == nil && len(rec) > 0 {
|
||||
dat = rec[0].Value
|
||||
}
|
||||
values := config.NewJSONValues(dat)
|
||||
return values.Get(path)
|
||||
return values.Get(path), nil
|
||||
}
|
||||
|
||||
func (c *conf) Set(path string, val interface{}, options ...config.Option) {
|
||||
func (c *conf) Set(path string, val interface{}, options ...config.Option) error {
|
||||
rec, err := c.store.Read(c.key)
|
||||
dat := []byte("{}")
|
||||
if err == nil && len(rec) > 0 {
|
||||
@@ -49,18 +49,22 @@ func (c *conf) Set(path string, val interface{}, options ...config.Option) {
|
||||
}
|
||||
values := config.NewJSONValues(dat)
|
||||
values.Set(path, val)
|
||||
c.store.Write(&store.Record{
|
||||
return c.store.Write(&store.Record{
|
||||
Key: c.key,
|
||||
Value: values.Bytes(),
|
||||
})
|
||||
}
|
||||
|
||||
func (c *conf) Delete(path string, options ...config.Option) {
|
||||
func (c *conf) Delete(path string, options ...config.Option) error {
|
||||
rec, err := c.store.Read(c.key)
|
||||
dat := []byte("{}")
|
||||
if err != nil || len(rec) == 0 {
|
||||
return
|
||||
return nil
|
||||
}
|
||||
values := config.NewJSONValues(dat)
|
||||
values.Delete(path)
|
||||
return c.store.Write(&store.Record{
|
||||
Key: c.key,
|
||||
Value: values.Bytes(),
|
||||
})
|
||||
}
|
||||
|
Reference in New Issue
Block a user