diff --git a/app/jobs/migrate_resources_job.rb b/app/jobs/migrate_resources_job.rb deleted file mode 100644 index 128f75779..000000000 --- a/app/jobs/migrate_resources_job.rb +++ /dev/null @@ -1,28 +0,0 @@ -# frozen_string_literal: true - -# migrates models from AF to valkyrie -class MigrateResourcesJob < ApplicationJob - attr_accessor :errors - # input [Array>>String] Array of ActiveFedora model names to migrate to valkyrie objects - # defaults to AdminSet & Collection models if empty - def perform(models: ['AdminSet', 'Collection'], ids: []) - errors = [] - if ids.blank? - models.each do |model| - model.constantize.find_each do |item| - resource = Hyrax.query_service.find_by(id: item.id) - result = MigrateResourceService.new(resource: resource).call - errors << result unless result.success? - end - end - else - ids.each do |id| - resource = Hyrax.query_service.find_by(id: id) - next unless resource.wings? # this resource has already been converted - result = MigrateResourceService.new(resource: resource).call - errors << result unless result.success? - end - end - raise errors.inspect if errors.present? - end -end diff --git a/app/services/migrate_resource_service.rb b/app/services/migrate_resource_service.rb deleted file mode 100644 index a8d2b2b41..000000000 --- a/app/services/migrate_resource_service.rb +++ /dev/null @@ -1,55 +0,0 @@ -# frozen_string_literal: true - -# migrates models from AF to valkyrie -class MigrateResourceService - attr_accessor :resource - def initialize(resource:) - @resource = resource - end - - def model - @model || Wings::ModelRegistry.lookup(resource.class).to_s - end - - def call - prep_resource - Hyrax::Transactions::Container[model_events(model)] - .with_step_args(**model_steps(model)).call(resource_form) - end - - def prep_resource - case model - when 'FileSet' - resource.creator << ::User.batch_user.email if resource.creator.blank? - end - end - - def resource_form - @resource_form ||= Hyrax::Forms::ResourceForm.for(resource: resource) - end - - def model_events(model) - { - 'AdminSet' => 'admin_set_resource.update', - 'Collection' => 'change_set.update_collection', - 'FileSet' => 'change_set.update_file_set' - }[model] || 'change_set.update_work' - end - - def model_steps(model) - { - 'AdminSet' => {}, - 'Collection' => { - 'collection_resource.save_collection_banner' => { banner_unchanged_indicator: true }, - 'collection_resource.save_collection_logo' => { logo_unchanged_indicator: true } - }, - 'FileSet' => { - 'file_set.save_acl' => {} - } - }[model] || { - 'work_resource.add_file_sets' => { uploaded_files: [], file_set_params: [] }, - 'work_resource.update_work_members' => { work_members_attributes: [] }, - 'work_resource.save_acl' => { permissions_params: [] } - } - end -end diff --git a/spec/jobs/migrate_resources_job_spec.rb b/spec/jobs/migrate_resources_job_spec.rb deleted file mode 100644 index 4eb7102f3..000000000 --- a/spec/jobs/migrate_resources_job_spec.rb +++ /dev/null @@ -1,44 +0,0 @@ -# frozen_string_literal: true - -require 'freyja/persister' -RSpec.describe MigrateResourcesJob, clean: true do - before do - ActiveJob::Base.queue_adapter = :test - FactoryBot.create(:group, name: "public") - end - - after do - clear_enqueued_jobs - end - - let(:account) { create(:account_with_public_schema) } - let(:af_file_set) { create(:file_set, title: ['TestFS']) } - - let!(:af_admin_set) do - as = AdminSet.new(title: ['AF Admin Set']) - as.save - AdminSet.find(as.id) - end - - describe '#perform' do - it "migrates admin sets to valkyrie", active_fedora_to_valkyrie: true do - expect(Valkyrie::Persistence::Postgres::ORM::Resource.find_by(id: af_admin_set.id.to_s)).to be_nil - - ActiveJob::Base.queue_adapter.perform_enqueued_jobs = true - switch!(account) - MigrateResourcesJob.perform_now - - expect(Valkyrie::Persistence::Postgres::ORM::Resource.find_by(id: af_admin_set.id.to_s)).to be_present - end - - it "migrates a file set by its id", active_fedora_to_valkyrie: true do - expect(Valkyrie::Persistence::Postgres::ORM::Resource.find_by(id: af_file_set.id.to_s)).to be_nil - - ActiveJob::Base.queue_adapter.perform_enqueued_jobs = true - switch!(account) - MigrateResourcesJob.perform_now(ids: [af_file_set.id]) - - expect(Valkyrie::Persistence::Postgres::ORM::Resource.find_by(id: af_file_set.id.to_s)).to be_present - end - end -end