owncast/models/configEntry.go
2023-12-19 18:35:15 -08:00

68 lines
1.6 KiB
Go

package models
import (
"bytes"
"encoding/gob"
)
// ConfigEntry is the actual object saved to the database.
// The Value is encoded using encoding/gob.
type ConfigEntry struct {
Key string
Value interface{}
}
// GetStringSlice will return the value as a string slice.
func (c *ConfigEntry) GetStringSlice() ([]string, error) {
decoder := c.GetDecoder()
var result []string
err := decoder.Decode(&result)
return result, err
}
// GetStringMap will return the value as a string map.
func (c *ConfigEntry) GetStringMap() (map[string]string, error) {
decoder := c.GetDecoder()
var result map[string]string
err := decoder.Decode(&result)
return result, err
}
// GetString will return the value as a string.
func (c *ConfigEntry) GetString() (string, error) {
decoder := c.GetDecoder()
var result string
err := decoder.Decode(&result)
return result, err
}
// GetNumber will return the value as a float64.
func (c *ConfigEntry) GetNumber() (float64, error) {
decoder := c.GetDecoder()
var result float64
err := decoder.Decode(&result)
return result, err
}
// GetBool will return the value as a bool.
func (c *ConfigEntry) GetBool() (bool, error) {
decoder := c.GetDecoder()
var result bool
err := decoder.Decode(&result)
return result, err
}
// GetObject will return the value as an object.
func (c *ConfigEntry) GetObject(result interface{}) error {
decoder := c.GetDecoder()
err := decoder.Decode(result)
return err
}
// GetDecoder will return a decoder for the value.
func (c *ConfigEntry) GetDecoder() *gob.Decoder {
valueBytes := c.Value.([]byte)
decoder := gob.NewDecoder(bytes.NewBuffer(valueBytes))
return decoder
}