From 298ce908c2f6c37ebf8b05da7f2a4dac643b6ef7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toma=C5=BE=20Jerman?= Date: Mon, 14 Oct 2019 14:12:02 +0200 Subject: [PATCH] Improve setting export/import structure Properly encode/decode json structures. --- pkg/settings/exporter.go | 11 +++++++++-- pkg/settings/importer.go | 11 ++++++----- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/pkg/settings/exporter.go b/pkg/settings/exporter.go index e32e31487..d13198602 100644 --- a/pkg/settings/exporter.go +++ b/pkg/settings/exporter.go @@ -1,15 +1,22 @@ package settings -import "gopkg.in/yaml.v2" +import ( + "encoding/json" + + "gopkg.in/yaml.v2" +) // Export transforms a given ValueSet into a yaml exportable structure func Export(ss ValueSet) (o yaml.MapSlice) { o = yaml.MapSlice{} for _, s := range ss { + var v interface{} + json.Unmarshal(s.Value, &v) setting := yaml.MapItem{ Key: s.Name, - Value: s.Value.String(), + Value: v, } + o = append(o, setting) } diff --git a/pkg/settings/importer.go b/pkg/settings/importer.go index 10b6146a0..33c319b17 100644 --- a/pkg/settings/importer.go +++ b/pkg/settings/importer.go @@ -2,11 +2,11 @@ package settings import ( "context" + "encoding/json" "github.com/pkg/errors" "github.com/cortezaproject/corteza-server/pkg/deinterfacer" - "github.com/jmoiron/sqlx/types" ) type ( @@ -36,14 +36,15 @@ func (imp *Importer) CastSet(settings interface{}) (err error) { } func (imp *Importer) addSetting(name string, value interface{}) (err error) { - v, ok := value.(string) - if !ok { - return errors.New("value must be string") + // Convert to interface{}, since json.Marshal cant handle map[interface{}]interface{} + v, err := json.Marshal(deinterfacer.Simplify(value)) + if err != nil { + return err } setting := &Value{ Name: name, - Value: types.JSONText(v), + Value: v, } imp.settings = append(imp.settings, setting)