From d944c8ae3a809a3779af88ee1def22e4ddb61f53 Mon Sep 17 00:00:00 2001 From: ioito Date: Wed, 13 Apr 2022 16:08:19 +0800 Subject: [PATCH] fix(region): avoid export duplicate tag key --- pkg/cloudcommon/db/metadataresource.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/pkg/cloudcommon/db/metadataresource.go b/pkg/cloudcommon/db/metadataresource.go index 145ef3b688..3faac2d083 100644 --- a/pkg/cloudcommon/db/metadataresource.go +++ b/pkg/cloudcommon/db/metadataresource.go @@ -247,12 +247,16 @@ func (meta *SMetadataResourceBaseModelManager) GetExportExtraKeys(keys stringuti } func (meta *SMetadataResourceBaseModelManager) ListItemExportKeys(manager IModelManager, q *sqlchemy.SQuery, keys stringutils2.SSortedStrings) *sqlchemy.SQuery { + keyMaps := map[string]bool{} for _, key := range keys { if strings.HasPrefix(key, TAG_EXPORT_KEY_PREFIX) { tagKey := key[len(TAG_EXPORT_KEY_PREFIX):] - metaQ := Metadata.Query("obj_id", "value").Equals("obj_type", manager.Keyword()).Equals("key", tagKey).SubQuery() - q = q.LeftJoin(metaQ, sqlchemy.Equals(q.Field("id"), metaQ.Field("obj_id"))) - q = q.AppendField(metaQ.Field("value", key)) + if _, ok := keyMaps[strings.ToLower(tagKey)]; !ok { + metaQ := Metadata.Query("obj_id", "value").Equals("obj_type", manager.Keyword()).Equals("key", tagKey).SubQuery() + q = q.LeftJoin(metaQ, sqlchemy.Equals(q.Field("id"), metaQ.Field("obj_id"))) + q = q.AppendField(metaQ.Field("value", key)) + keyMaps[strings.ToLower(tagKey)] = true + } } } return q