2021-07-05 12:08:33 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
module BulkImports
|
|
|
|
class ImportsFinder
|
2022-03-30 06:09:34 +00:00
|
|
|
def initialize(user:, params: {})
|
2021-07-05 12:08:33 +00:00
|
|
|
@user = user
|
2022-03-30 06:09:34 +00:00
|
|
|
@params = params
|
2021-07-05 12:08:33 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def execute
|
2022-03-30 06:09:34 +00:00
|
|
|
imports = filter_by_status(user.bulk_imports)
|
|
|
|
sort(imports)
|
2021-07-05 12:08:33 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
attr_reader :user, :status
|
|
|
|
|
|
|
|
def filter_by_status(imports)
|
2022-03-30 06:09:34 +00:00
|
|
|
return imports unless BulkImport.all_human_statuses.include?(@params[:status])
|
2021-07-05 12:08:33 +00:00
|
|
|
|
2022-03-30 06:09:34 +00:00
|
|
|
imports.with_status(@params[:status])
|
|
|
|
end
|
|
|
|
|
|
|
|
def sort(imports)
|
|
|
|
return imports unless @params[:sort]
|
|
|
|
|
|
|
|
imports.order_by_created_at(@params[:sort])
|
2021-07-05 12:08:33 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|