diff --git a/pkg/schema/schema.go b/pkg/schema/schema.go index e0eca6b6ffc02511acbe3712b2f2bf83fc5bc05e..ab9b7e952d3720f8c7065a2bb7d7e74b1c91927f 100644 --- a/pkg/schema/schema.go +++ b/pkg/schema/schema.go @@ -12,7 +12,8 @@ import ( type Schema struct { field.Field - Loaded bool `json:"loaded"` + Loaded bool `json:"loaded"` + Metadata map[string]string `json:"metadata"` } func New(kv ...interface{}) *Schema { @@ -33,8 +34,9 @@ var ( func (s *Schema) Clone(reset bool) *Schema { return &Schema{ - Field: *s.Field.Clone(reset), - Loaded: s.Loaded, + Field: *s.Field.Clone(reset), + Loaded: s.Loaded, + Metadata: s.Metadata, } } diff --git a/pkg/schema/schema_json.go b/pkg/schema/schema_json.go index 906acb5d0d361611d01f43d10bd0f80377ccb4a7..72b4ac25bb78c6d8cb868bd7018e81acf2d2080c 100644 --- a/pkg/schema/schema_json.go +++ b/pkg/schema/schema_json.go @@ -6,8 +6,8 @@ import ( ) type jsonSchema struct { - //Field json.RawMessage `json:"field,inline"` - Loaded bool `json:"loaded"` + Loaded bool `json:"loaded"` + Metadata map[string]string `json:"metadata"` } func (s *Schema) UnmarshalJSON(b []byte) error { @@ -17,20 +17,12 @@ func (s *Schema) UnmarshalJSON(b []byte) error { return errors.Wrapf(err, "error unmarshal json into field") } s.Loaded = j.Loaded + s.Metadata = j.Metadata if err := s.Field.UnmarshalJSON(b); err != nil { return err } - //if len(j.Field) > 0 { - // if err := s.Field.UnmarshalJSON(j.Field); err != nil { - // return err - // } - // //if err := jsoniter.Unmarshal(j.Field, &s.Field); err != nil { - // // return err - // //} - //} - return nil } @@ -42,8 +34,8 @@ func (s *Schema) MarshalJSON() ([]byte, error) { } jsonSch, err := jsoniter.Marshal(jsonSchema{ - //Field: b, - Loaded: s.Loaded, + Loaded: s.Loaded, + Metadata: s.Metadata, }) if err != nil { return nil, err diff --git a/pkg/schema/test/object_test.go b/pkg/schema/test/object_test.go index e5af975cdb9ed8e86044e5d357530dd2420afee9..e70aa6a3f11c94125cbf2f320741becf1359ad48 100644 --- a/pkg/schema/test/object_test.go +++ b/pkg/schema/test/object_test.go @@ -110,10 +110,13 @@ func TestSchema_JSON(t *testing.T) { "evaluatedField", field.String(modify.Value("stringField2 + '_' ")), ) sch.Loaded = true + sch.Metadata = map[string]string{ + "extension": "perxisweb", + } b, err := json.MarshalIndent(sch, "", " ") require.NoError(t, err) - //fmt.Println(string(b)) + fmt.Println(string(b)) res := schema.New() err = json.Unmarshal(b, res)