41 lines
784 B
Go
41 lines
784 B
Go
package configstore
|
|
|
|
import (
|
|
"encoding/json"
|
|
)
|
|
|
|
// marshalToString marshals the given value to a JSON string.
|
|
func marshalToString(v any) (string, error) {
|
|
if v == nil {
|
|
return "", nil
|
|
}
|
|
data, err := json.Marshal(v)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return string(data), nil
|
|
}
|
|
|
|
// marshalToStringPtr marshals the given value to a JSON string and returns a pointer to the string.
|
|
func marshalToStringPtr(v any) (*string, error) {
|
|
if v == nil {
|
|
return nil, nil
|
|
}
|
|
data, err := marshalToString(v)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &data, nil
|
|
}
|
|
|
|
// deepCopy creates a deep copy of a given type
|
|
func deepCopy[T any](in T) (T, error) {
|
|
var out T
|
|
b, err := json.Marshal(in)
|
|
if err != nil {
|
|
return out, err
|
|
}
|
|
err = json.Unmarshal(b, &out)
|
|
return out, err
|
|
}
|