This is an automated email from the ASF dual-hosted git repository. asifdxtreme pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-kie.git
commit 8f4f5e76d5c27d5b32ee475b098264b8481268a5 Author: tian <[email protected]> AuthorDate: Thu Jun 6 18:47:09 2019 +0800 fix bug, key is duplicated --- pkg/model/kv.go | 4 ++-- pkg/model/mongodb_doc.go | 4 ++++ server/dao/kie_api.go | 19 +++++++++++-------- pkg/model/kv.go => server/dao/tool.go | 12 ++++++++---- 4 files changed, 25 insertions(+), 14 deletions(-) diff --git a/pkg/model/kv.go b/pkg/model/kv.go index 332c074..73d33e3 100644 --- a/pkg/model/kv.go +++ b/pkg/model/kv.go @@ -18,6 +18,6 @@ package model type KVResponse struct { - LabelDoc *LabelDoc `json:"labels"` - Data []*KVDoc `json:"data"` + LabelDoc *LabelDocResponse `json:"label"` + Data []*KVDoc `json:"data"` } diff --git a/pkg/model/mongodb_doc.go b/pkg/model/mongodb_doc.go index 7645a14..71a9483 100644 --- a/pkg/model/mongodb_doc.go +++ b/pkg/model/mongodb_doc.go @@ -19,6 +19,10 @@ package model import "go.mongodb.org/mongo-driver/bson/primitive" +type LabelDocResponse struct { + LabelID string `json:"label_id,omitempty"` + Labels map[string]string `json:"labels,omitempty"` +} type LabelDoc struct { ID primitive.ObjectID `json:"_id,omitempty" bson:"_id,omitempty"` Labels map[string]string `json:"labels,omitempty"` diff --git a/server/dao/kie_api.go b/server/dao/kie_api.go index aaf613f..323d8e7 100644 --- a/server/dao/kie_api.go +++ b/server/dao/kie_api.go @@ -229,15 +229,14 @@ func (s *MongodbService) FindKV(ctx context.Context, domain string, options ...F } if len(curKV.Labels) == len(opts.Labels) { openlogging.Debug("hit exact labels") - curKV.Domain = "" - curKV.Labels = nil //exact match don't need to return labels labelGroup := &model.KVResponse{ - LabelDoc: &model.LabelDoc{ - Labels: opts.Labels, - ID: primitive.NilObjectID, + LabelDoc: &model.LabelDocResponse{ + Labels: opts.Labels, + LabelID: curKV.LabelID, }, Data: make([]*model.KVDoc, 0), } + clearKV(curKV) labelGroup.Data = append(labelGroup.Data, curKV) kvResp = append(kvResp, labelGroup) return kvResp, nil @@ -268,6 +267,7 @@ func (s *MongodbService) FindKV(ctx context.Context, domain string, options ...F for _, labelGroup = range kvResp { if reflect.DeepEqual(labelGroup.LabelDoc.Labels, curKV.Labels) { groupExist = true + clearKV(curKV) labelGroup.Data = append(labelGroup.Data, curKV) break } @@ -275,14 +275,17 @@ func (s *MongodbService) FindKV(ctx context.Context, domain string, options ...F } if !groupExist { labelGroup = &model.KVResponse{ - LabelDoc: &model.LabelDoc{ - Labels: curKV.Labels, + LabelDoc: &model.LabelDocResponse{ + Labels: curKV.Labels, + LabelID: curKV.LabelID, }, Data: []*model.KVDoc{curKV}, } + clearKV(curKV) openlogging.Debug("add new label group") + kvResp = append(kvResp, labelGroup) } - kvResp = append(kvResp, labelGroup) + } if len(kvResp) == 0 { return nil, ErrKeyNotExists diff --git a/pkg/model/kv.go b/server/dao/tool.go similarity index 79% copy from pkg/model/kv.go copy to server/dao/tool.go index 332c074..b3d5ea4 100644 --- a/pkg/model/kv.go +++ b/server/dao/tool.go @@ -15,9 +15,13 @@ * limitations under the License. */ -package model +package dao -type KVResponse struct { - LabelDoc *LabelDoc `json:"labels"` - Data []*KVDoc `json:"data"` +import "github.com/apache/servicecomb-kie/pkg/model" + +//clearKV clean attr which don't need to return to client side +func clearKV(kv *model.KVDoc) { + kv.Domain = "" + kv.Labels = nil + kv.LabelID = "" }
