Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/finders/concerns/packages/finder_helper.rb')
-rw-r--r--app/finders/concerns/packages/finder_helper.rb33
1 files changed, 33 insertions, 0 deletions
diff --git a/app/finders/concerns/packages/finder_helper.rb b/app/finders/concerns/packages/finder_helper.rb
index 524e7aa7ff9..30bc0ff7909 100644
--- a/app/finders/concerns/packages/finder_helper.rb
+++ b/app/finders/concerns/packages/finder_helper.rb
@@ -4,6 +4,9 @@ module Packages
module FinderHelper
extend ActiveSupport::Concern
+ InvalidPackageTypeError = Class.new(StandardError)
+ InvalidStatusError = Class.new(StandardError)
+
private
def packages_visible_to_user(user, within_group:)
@@ -25,5 +28,35 @@ module Packages
::Project.in_namespace(namespace_ids)
.public_or_visible_to_user(user, ::Gitlab::Access::REPORTER)
end
+
+ def package_type
+ params[:package_type].presence
+ end
+
+ def filter_by_package_type(packages)
+ return packages unless package_type
+ raise InvalidPackageTypeError unless ::Packages::Package.package_types.key?(package_type)
+
+ packages.with_package_type(package_type)
+ end
+
+ def filter_by_package_name(packages)
+ return packages unless params[:package_name].present?
+
+ packages.search_by_name(params[:package_name])
+ end
+
+ def filter_with_version(packages)
+ return packages if params[:include_versionless].present?
+
+ packages.has_version
+ end
+
+ def filter_by_status(packages)
+ return packages.displayable unless params[:status].present?
+ raise InvalidStatusError unless Package.statuses.key?(params[:status])
+
+ packages.with_status(params[:status])
+ end
end
end