diff --git a/field.go b/field.go index e1eed501d..4cf1861df 100644 --- a/field.go +++ b/field.go @@ -1094,9 +1094,9 @@ func (f *Field) ImportValue(columnIDs []uint64, values []int64) error { func (f *Field) MarshalJSON() ([]byte, error) { thing := struct { - Name string - Options FieldOptions - Views []*ViewInfo + Name string `json:"name"` + Options FieldOptions `json:"options"` + Views []*ViewInfo `json:"views"` }{ Name: f.Name(), Options: f.Options(), @@ -1134,7 +1134,7 @@ type FieldOptions struct { Min int64 `json:"min,omitempty"` Max int64 `json:"max,omitempty"` TimeQuantum TimeQuantum `json:"timeQuantum,omitempty"` - Keys bool `json:"keys,omitempty"` + Keys bool `json:"keys"` } // applyDefaultOptions returns a new FieldOptions object @@ -1177,28 +1177,34 @@ func (o *FieldOptions) MarshalJSON() ([]byte, error) { Type string `json:"type"` CacheType string `json:"cacheType"` CacheSize uint32 `json:"cacheSize"` + Keys bool `json:"keys"` }{ o.Type, o.CacheType, o.CacheSize, + o.Keys, }) case FieldTypeInt: return json.Marshal(struct { Type string `json:"type"` Min int64 `json:"min"` Max int64 `json:"max"` + Keys bool `json:"keys"` }{ o.Type, o.Min, o.Max, + o.Keys, }) case FieldTypeTime: return json.Marshal(struct { Type string `json:"type"` TimeQuantum TimeQuantum `json:"timeQuantum"` + Keys bool `json:"keys"` }{ o.Type, o.TimeQuantum, + o.Keys, }) } return nil, errors.New("invalid field type") diff --git a/index.go b/index.go index 9d27f4174..0f6d222be 100644 --- a/index.go +++ b/index.go @@ -83,11 +83,13 @@ func (i *Index) MarshalJSON() ([]byte, error) { fields = append(fields, f) } thing := struct { - Name string - Fields []*Field + Name string `json:"name"` + Options IndexOptions `json:"options"` + Fields []*Field `json:"fields"` }{ - Name: i.name, - Fields: fields, + Name: i.name, + Options: i.Options(), + Fields: fields, } return json.Marshal(thing) } @@ -422,8 +424,9 @@ func (p indexSlice) Less(i, j int) bool { return p[i].Name() < p[j].Name() } // IndexInfo represents schema information for an index. type IndexInfo struct { - Name string `json:"name"` - Fields []*FieldInfo `json:"fields"` + Name string `json:"name"` + Options IndexOptions `json:"options"` + Fields []*FieldInfo `json:"fields"` } type indexInfoSlice []*IndexInfo