diff options
Diffstat (limited to 'app/finders/packages/npm/package_finder.rb')
-rw-r--r-- | app/finders/packages/npm/package_finder.rb | 37 |
1 files changed, 24 insertions, 13 deletions
diff --git a/app/finders/packages/npm/package_finder.rb b/app/finders/packages/npm/package_finder.rb index 2854226e178..3b79785d0e1 100644 --- a/app/finders/packages/npm/package_finder.rb +++ b/app/finders/packages/npm/package_finder.rb @@ -2,29 +2,40 @@ module Packages module Npm class PackageFinder - attr_reader :project, :package_name - delegate :find_by_version, to: :execute + delegate :last, to: :execute - def initialize(project, package_name) - @project = project + def initialize(package_name, project: nil, namespace: nil) @package_name = package_name + @project = project + @namespace = namespace end def execute - return Packages::Package.none unless project - - packages + base.npm + .with_name(@package_name) + .last_of_each_version + .preload_files end private - def packages - project.packages - .npm - .with_name(package_name) - .last_of_each_version - .preload_files + def base + if @project + packages_for_project + elsif @namespace + packages_for_namespace + else + ::Packages::Package.none + end + end + + def packages_for_project + @project.packages + end + + def packages_for_namespace + ::Packages::Package.for_projects(@namespace.all_projects) end end end |