mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-01 15:07:17 +08:00
添加返回distinct标签
This commit is contained in:
@@ -33,4 +33,17 @@ func init() {
|
||||
printList(result, []string{})
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&options.TagListOptions{}, "tag-list", "List tags", func(s *mcclient.ClientSession, opts *options.TagListOptions) error {
|
||||
params, err := options.ListStructToParams(opts)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
result, err := modules.Metadatas.Get(s, "tag-value-pairs", params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(result)
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
@@ -102,6 +102,32 @@ func (m *SMetadata) Delete(ctx context.Context, userCred mcclient.TokenCredentia
|
||||
return DeleteModel(ctx, userCred, m)
|
||||
}
|
||||
|
||||
func (manager *SMetadataManager) AllowGetPropertyTagValuePairs(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (manager *SMetadataManager) GetPropertyTagValuePairs(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) (jsonutils.JSONObject, error) {
|
||||
q := manager.Query("key", "value").Distinct()
|
||||
sql, err := manager.ListItemFilter(ctx, q, userCred, query)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
metadatas := []SMetadata{}
|
||||
err = sql.All(&metadatas)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
result := map[string][]string{}
|
||||
for i := 0; i < len(metadatas); i++ {
|
||||
key, value := metadatas[i].Key, metadatas[i].Value
|
||||
if _, ok := result[key]; !ok {
|
||||
result[key] = []string{}
|
||||
}
|
||||
result[key] = append(result[key], value)
|
||||
}
|
||||
return jsonutils.Marshal(result), nil
|
||||
}
|
||||
|
||||
func (manager *SMetadataManager) AllowListItems(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
@@ -21,3 +21,5 @@ type MetadataListOptions struct {
|
||||
UserMeta *bool `help:"Show user metadata olny"`
|
||||
Admin *bool `help:"Show all metadata"`
|
||||
}
|
||||
|
||||
type TagListOptions MetadataListOptions
|
||||
|
||||
Reference in New Issue
Block a user