diff options
Diffstat (limited to 'app/finders/bulk_imports')
-rw-r--r-- | app/finders/bulk_imports/entities_finder.rb | 35 | ||||
-rw-r--r-- | app/finders/bulk_imports/imports_finder.rb | 24 |
2 files changed, 59 insertions, 0 deletions
diff --git a/app/finders/bulk_imports/entities_finder.rb b/app/finders/bulk_imports/entities_finder.rb new file mode 100644 index 00000000000..2947d155668 --- /dev/null +++ b/app/finders/bulk_imports/entities_finder.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +module BulkImports + class EntitiesFinder + def initialize(user:, bulk_import: nil, status: nil) + @user = user + @bulk_import = bulk_import + @status = status + end + + def execute + ::BulkImports::Entity + .preload(:failures) # rubocop: disable CodeReuse/ActiveRecord + .by_user_id(user.id) + .then(&method(:filter_by_bulk_import)) + .then(&method(:filter_by_status)) + end + + private + + attr_reader :user, :bulk_import, :status + + def filter_by_bulk_import(entities) + return entities unless bulk_import + + entities.where(bulk_import_id: bulk_import.id) # rubocop: disable CodeReuse/ActiveRecord + end + + def filter_by_status(entities) + return entities unless ::BulkImports::Entity.all_human_statuses.include?(status) + + entities.with_status(status) + end + end +end diff --git a/app/finders/bulk_imports/imports_finder.rb b/app/finders/bulk_imports/imports_finder.rb new file mode 100644 index 00000000000..b554bbfa5e7 --- /dev/null +++ b/app/finders/bulk_imports/imports_finder.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +module BulkImports + class ImportsFinder + def initialize(user:, status: nil) + @user = user + @status = status + end + + def execute + filter_by_status(user.bulk_imports) + end + + private + + attr_reader :user, :status + + def filter_by_status(imports) + return imports unless BulkImport.all_human_statuses.include?(status) + + imports.with_status(status) + end + end +end |