From cc7423d5588d247537273ab8139922bb01f9fb90 Mon Sep 17 00:00:00 2001 From: Qiu Jian Date: Fri, 16 Oct 2020 10:30:02 +0800 Subject: [PATCH] fix: resolve with_meta filter conflict --- pkg/apis/list.go | 7 +++++-- pkg/cloudcommon/db/metadataresource.go | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/pkg/apis/list.go b/pkg/apis/list.go index 90f9a91ebc..70b72ed968 100644 --- a/pkg/apis/list.go +++ b/pkg/apis/list.go @@ -199,12 +199,15 @@ type MetadataResourceListInput struct { // 返回资源的标签不包含用户标签 WithoutUserMeta *bool `json:"without_user_meta"` - // 返回资源的标签包含用户标签 + // 返回包含用户标签的资源 WithUserMeta *bool `json:"with_user_meta"` - // 返回资源的标签包含外部标签 + // 返回包含外部标签的资源 WithCloudMeta *bool `json:"with_cloud_meta"` + // 返回包含任意标签的资源 + WithAnyMeta *bool `json:"with_any_meta"` + // 返回列表数据中包含资源的标签数据(Metadata) WithMeta *bool `json:"with_meta"` } diff --git a/pkg/cloudcommon/db/metadataresource.go b/pkg/cloudcommon/db/metadataresource.go index c3eb8fd9f9..b11a632472 100644 --- a/pkg/cloudcommon/db/metadataresource.go +++ b/pkg/cloudcommon/db/metadataresource.go @@ -90,10 +90,10 @@ func (meta *SMetadataResourceBaseModelManager) ListItemFilter( } } - if input.WithMeta != nil { + if input.WithAnyMeta != nil { metadatas := Metadata.Query().Equals("obj_type", manager.Keyword()).SubQuery() sq := metadatas.Query(metadatas.Field("obj_id")).Distinct().SubQuery() - if *input.WithMeta { + if *input.WithAnyMeta { q = q.Filter(sqlchemy.In(q.Field("id"), sq)) } else { q = q.Filter(sqlchemy.NotIn(q.Field("id"), sq))