Sha256: 813b5cd998b74dabfa746be3bde708392c81a3691e30adca2856abd5ee2e382d

Contents?: true

Size: 1.41 KB

Versions: 14

Compression:

Stored size: 1.41 KB

Contents

# frozen_string_literal: true
module Hyrax
  module Works
    class MigrationService
      # @api public
      #
      # Migrate data stored in FCrepo from one predicate to another
      #   The main use case is where the predicate used for a specific property is changed.
      #   Data already stored in Fedora under the original predicate needs to be transfered
      #   and the original data cleaned up.
      def self.migrate_predicate(predicate_from, predicate_to, works_to_update = ActiveFedora::Base.all)
        migrated = 0
        Hyrax.logger.info "*** Migrating #{predicate_from} to #{predicate_to} in #{works_to_update.count} works"
        works_to_update.each do |work|
          next unless work.ldp_source.content.include?(predicate_from.to_s)
          migrate_data(predicate_from, predicate_to, work)
          migrated += 1
        end
        Hyrax.logger.info "--- Migration Complete (#{migrated} migrated)"
      end

      # @api private
      #
      # Migrate data
      def self.migrate_data(predicate_from, predicate_to, work)
        orm = Ldp::Orm.new(work.ldp_source)
        orm.value(predicate_from).each { |val| orm.graph.insert([orm.resource.subject_uri, predicate_to, val.to_s]) }
        orm.graph.delete([orm.resource.subject_uri, predicate_from, nil])
        orm.save
        Hyrax.logger.info " Data migrated from #{predicate_from} to #{predicate_to} - id: #{work.id}"
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
hyrax-5.1.0.pre.beta1 app/services/hyrax/works/migration_service.rb
hyrax-5.0.4 app/services/hyrax/works/migration_service.rb
hyrax-5.0.3 app/services/hyrax/works/migration_service.rb
hyrax-5.0.2 app/services/hyrax/works/migration_service.rb
hyrax-5.0.1 app/services/hyrax/works/migration_service.rb
hyrax-5.0.0 app/services/hyrax/works/migration_service.rb
hyrax-5.0.0.rc3 app/services/hyrax/works/migration_service.rb
hyrax-5.0.0.rc2 app/services/hyrax/works/migration_service.rb
hyrax-5.0.0.rc1 app/services/hyrax/works/migration_service.rb
hyrax-4.0.0 app/services/hyrax/works/migration_service.rb
hyrax-4.0.0.rc3 app/services/hyrax/works/migration_service.rb
hyrax-4.0.0.rc2 app/services/hyrax/works/migration_service.rb
hyrax-4.0.0.rc1 app/services/hyrax/works/migration_service.rb
hyrax-4.0.0.beta2 app/services/hyrax/works/migration_service.rb