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 = ""
 }

Reply via email to