Sha256: 8271eee94653bdebfa61fc57cea1858cf8a272fcd334cd208e8775c1eea252d6

Contents?: true

Size: 1.17 KB

Versions: 6

Compression:

Stored size: 1.17 KB

Contents

# frozen_string_literal: true
module Valkyrie::Persistence
  # Wraps up multiple persisters under a common interface, to transparently
  # persist to multiple places at once.
  #
  # @example
  #   persister = Valkyrie.config.metadata_adapter
  #   index_persister = Valkyrie::MetadataAdapter.find(:index_solr)
  #   Valkyrie::MetadataAdapter.register(
  #     Valkyrie::Persistence::CompositePersister.new(persister, index_persister),
  #     :my_composite_persister
  #   )
  #
  class CompositePersister
    attr_reader :persisters
    def initialize(*persisters)
      @persisters = persisters
    end

    # (see Valkyrie::Persistence::Memory::Persister#save)
    def save(resource:)
      persisters.inject(resource) { |m, persister| persister.save(resource: m) }
    end

    # (see Valkyrie::Persistence::Memory::Persister#save_all)
    def save_all(resources:)
      resources.map do |resource|
        save(resource: resource)
      end
    end

    # (see Valkyrie::Persistence::Memory::Persister#delete)
    def delete(resource:)
      persisters.inject(resource) { |m, persister| persister.delete(resource: m) }
    end

    def wipe!
      persisters.each_entry(&:wipe!)
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
valkyrie-1.1.2 lib/valkyrie/persistence/composite_persister.rb
valkyrie-1.1.1 lib/valkyrie/persistence/composite_persister.rb
valkyrie-1.1.0 lib/valkyrie/persistence/composite_persister.rb
valkyrie-1.0.0 lib/valkyrie/persistence/composite_persister.rb
valkyrie-1.0.0.rc2 lib/valkyrie/persistence/composite_persister.rb
valkyrie-1.0.0.rc1 lib/valkyrie/persistence/composite_persister.rb