configEntry.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package data
  2. import (
  3. "bytes"
  4. "encoding/gob"
  5. )
  6. // ConfigEntry is the actual object saved to the database.
  7. // The Value is encoded using encoding/gob.
  8. type ConfigEntry struct {
  9. Value interface{}
  10. Key string
  11. }
  12. func (c *ConfigEntry) getStringSlice() ([]string, error) {
  13. decoder := c.getDecoder()
  14. var result []string
  15. err := decoder.Decode(&result)
  16. return result, err
  17. }
  18. func (c *ConfigEntry) getStringMap() (map[string]string, error) {
  19. decoder := c.getDecoder()
  20. var result map[string]string
  21. err := decoder.Decode(&result)
  22. return result, err
  23. }
  24. func (c *ConfigEntry) getString() (string, error) {
  25. decoder := c.getDecoder()
  26. var result string
  27. err := decoder.Decode(&result)
  28. return result, err
  29. }
  30. func (c *ConfigEntry) getNumber() (float64, error) {
  31. decoder := c.getDecoder()
  32. var result float64
  33. err := decoder.Decode(&result)
  34. return result, err
  35. }
  36. func (c *ConfigEntry) getBool() (bool, error) {
  37. decoder := c.getDecoder()
  38. var result bool
  39. err := decoder.Decode(&result)
  40. return result, err
  41. }
  42. func (c *ConfigEntry) getObject(result interface{}) error {
  43. decoder := c.getDecoder()
  44. err := decoder.Decode(result)
  45. return err
  46. }
  47. func (c *ConfigEntry) getDecoder() *gob.Decoder {
  48. valueBytes := c.Value.([]byte)
  49. decoder := gob.NewDecoder(bytes.NewBuffer(valueBytes))
  50. return decoder
  51. }