diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-09-14 15:10:35 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-09-14 15:10:35 +0300 |
commit | d378fdaa60adb7217e3fc798580ad206127728d5 (patch) | |
tree | 9cb715513dd4d4197f76b2908458551940b0a094 /app/presenters/packages | |
parent | 7b69070a7468c4a9b6fe0ed7fbf1b3f2b58434e0 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/presenters/packages')
-rw-r--r-- | app/presenters/packages/helm/index_presenter.rb | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/app/presenters/packages/helm/index_presenter.rb b/app/presenters/packages/helm/index_presenter.rb index a6cfc61c94d..e85a4f248cf 100644 --- a/app/presenters/packages/helm/index_presenter.rb +++ b/app/presenters/packages/helm/index_presenter.rb @@ -8,11 +8,12 @@ module Packages API_VERSION = 'v1' CHANNEL = 'channel' INDEX_YAML_SUFFIX = "/#{CHANNEL}/index.yaml" + EMPTY_HASH = {}.freeze - def initialize(project, project_id_param, package_files) - @project = project + def initialize(project_id_param, channel, packages) @project_id_param = project_id_param - @package_files = package_files + @channel = channel + @packages = packages end def api_version @@ -20,10 +21,12 @@ module Packages end def entries - files = @package_files.preload_helm_file_metadata + return EMPTY_HASH unless @channel.present? + result = Hash.new { |h, k| h[k] = [] } - files.find_each do |package_file| + # this .each is safe as we have max 300 objects + most_recent_package_files.each do |package_file| name = package_file.helm_metadata['name'] result[name] << package_file.helm_metadata.merge({ 'created' => package_file.created_at.utc.strftime('%Y-%m-%dT%H:%M:%S.%NZ'), @@ -48,6 +51,16 @@ module Packages 'contextPath' => path.delete_suffix(INDEX_YAML_SUFFIX) } end + + private + + def most_recent_package_files + ::Packages::PackageFile.most_recent_for( + @packages, + extra_join: :helm_file_metadatum, + extra_where: { packages_helm_file_metadata: { channel: @channel } } + ).preload_helm_file_metadata + end end end end |