You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.3 KiB
60 lines
1.3 KiB
package data |
|
|
|
import ( |
|
"bytes" |
|
"encoding/gob" |
|
) |
|
|
|
// ConfigEntry is the actual object saved to the database. |
|
// The Value is encoded using encoding/gob. |
|
type ConfigEntry struct { |
|
Value interface{} |
|
Key string |
|
} |
|
|
|
func (c *ConfigEntry) getStringSlice() ([]string, error) { |
|
decoder := c.getDecoder() |
|
var result []string |
|
err := decoder.Decode(&result) |
|
return result, err |
|
} |
|
|
|
func (c *ConfigEntry) getStringMap() (map[string]string, error) { |
|
decoder := c.getDecoder() |
|
var result map[string]string |
|
err := decoder.Decode(&result) |
|
return result, err |
|
} |
|
|
|
func (c *ConfigEntry) getString() (string, error) { |
|
decoder := c.getDecoder() |
|
var result string |
|
err := decoder.Decode(&result) |
|
return result, err |
|
} |
|
|
|
func (c *ConfigEntry) getNumber() (float64, error) { |
|
decoder := c.getDecoder() |
|
var result float64 |
|
err := decoder.Decode(&result) |
|
return result, err |
|
} |
|
|
|
func (c *ConfigEntry) getBool() (bool, error) { |
|
decoder := c.getDecoder() |
|
var result bool |
|
err := decoder.Decode(&result) |
|
return result, err |
|
} |
|
|
|
func (c *ConfigEntry) getObject(result interface{}) error { |
|
decoder := c.getDecoder() |
|
err := decoder.Decode(result) |
|
return err |
|
} |
|
|
|
func (c *ConfigEntry) getDecoder() *gob.Decoder { |
|
valueBytes := c.Value.([]byte) |
|
decoder := gob.NewDecoder(bytes.NewBuffer(valueBytes)) |
|
return decoder |
|
}
|
|
|