You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by as...@apache.org on 2019/06/27 11:53:28 UTC

[servicecomb-kie] 17/29: fix bug, key is duplicated

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 <xi...@gmail.com>
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 = ""
 }