diff --git a/registry/app/api/controller/metadata/utils.go b/registry/app/api/controller/metadata/utils.go index 15eb0e949..89e215f41 100644 --- a/registry/app/api/controller/metadata/utils.go +++ b/registry/app/api/controller/metadata/utils.go @@ -72,7 +72,7 @@ var artifactSortMap = map[string]string{ "repoKey": "name", "lastModified": "updated_at", "name": "image_name", - "downloadsCount": "image_name", + "downloadsCount": "download_count", "createdAt": "created_at", } @@ -88,7 +88,7 @@ var artifactVersionSortMap = map[string]string{ "name": "name", "size": "name", "pullCommand": "name", - "downloadsCount": "name", + "downloadsCount": "download_count", "lastModified": "updated_at", "createdAt": "created_at", } diff --git a/registry/app/store/database/tag.go b/registry/app/store/database/tag.go index 6065032b0..6889e9335 100644 --- a/registry/app/store/database/tag.go +++ b/registry/app/store/database/tag.go @@ -44,6 +44,7 @@ const ( greaterThan string = ">" labelSeparatorStart string = "%^_" labelSeparatorEnd string = "^_%" + downloadCount string = "download_count" ) type tagDao struct { @@ -399,8 +400,11 @@ func (t tagDao) GetAllArtifactsByParentID( if search != "" { q = q.Where("tag_image_name LIKE ?", sqlPartialMatch(search)) } - - q = q.OrderBy("tag_" + sortByField + " " + sortByOrder).Limit(uint64(limit)).Offset(uint64(offset)) + sortField := "tag_" + sortByField + if sortByField == downloadCount { + sortField = downloadCount + } + q = q.OrderBy(sortField + " " + sortByOrder).Limit(uint64(limit)).Offset(uint64(offset)) sql, args, err := q.ToSql() if err != nil { @@ -754,7 +758,11 @@ func (t tagDao) GetAllArtifactsByRepo( q = q.Where("'^_' || ar.image_labels || '^_' LIKE ?", labelsVal) } - q = q.OrderBy("t.tag_" + sortByField + " " + sortByOrder).Limit(uint64(limit)).Offset(uint64(offset)) + sortField := "t.tag_" + sortByField + if sortByField == downloadCount { + sortField = downloadCount + } + q = q.OrderBy(sortField + " " + sortByOrder).Limit(uint64(limit)).Offset(uint64(offset)) sql, args, err := q.ToSql() if err != nil { @@ -860,8 +868,11 @@ func (t tagDao) GetAllTagsByRepoAndImage( if search != "" { q = q.Where("tag_name LIKE ?", sqlPartialMatch(search)) } - - q = q.OrderBy("tag_" + sortByField + " " + sortByOrder).Limit(uint64(limit)).Offset(uint64(offset)) + sortField := "tag_" + sortByField + if sortByField == downloadCount { + sortField = downloadCount + } + q = q.OrderBy(sortField + " " + sortByOrder).Limit(uint64(limit)).Offset(uint64(offset)) sql, args, err := q.ToSql() if err != nil {