Sha256: c50a0fa975f43d91a4fe000456904f9bc2623b2300987edbc15887cb6a292e7e

Contents?: true

Size: 1.47 KB

Versions: 37

Compression:

Stored size: 1.47 KB

Contents

# frozen_string_literal: true
module Valkyrie::Persistence
  # Implements the DataMapper Pattern to proxy another Metadata Persister
  #
  # Provides with_buffer to send multiple updates at one time to the proxied persister
  #  In some cases this will realize performance gains
  #
  # @example
  #     buffered_persister.with_buffer do |persist, buffer|
  #       yield Valkyrie::AdapterContainer.new(persister: persist, query_service: metadata_adapter.query_service)
  #       buffer.persister.deletes.uniq(&:id).each do |delete|
  #         index_persister.delete(resource: delete)
  #       end
  #       index_persister.save_all(resources: buffer.query_service.find_all)
  #     end
  #
  # @see Valkyrie::Persistence::DeleteTrackingBuffer for more information on deletes used in the example above
  #
  class BufferedPersister
    attr_reader :persister, :buffer_class
    delegate :adapter, :wipe!, to: :persister
    def initialize(persister, buffer_class: Valkyrie::Persistence::DeleteTrackingBuffer)
      @persister = persister
      @buffer_class = buffer_class
    end

    def save(resource:)
      persister.save(resource: resource)
    end

    def save_all(resources:)
      persister.save_all(resources: resources)
    end

    def delete(resource:)
      persister.delete(resource: resource)
    end

    def with_buffer
      memory_buffer = buffer_class.new
      yield [Valkyrie::Persistence::CompositePersister.new(self, memory_buffer.persister), memory_buffer]
    end
  end
end

Version data entries

37 entries across 37 versions & 1 rubygems

Version Path
valkyrie-2.2.0 lib/valkyrie/persistence/buffered_persister.rb
valkyrie-2.1.2 lib/valkyrie/persistence/buffered_persister.rb
valkyrie-2.1.1 lib/valkyrie/persistence/buffered_persister.rb
valkyrie-2.1.0 lib/valkyrie/persistence/buffered_persister.rb
valkyrie-2.0.2 lib/valkyrie/persistence/buffered_persister.rb
valkyrie-2.0.1 lib/valkyrie/persistence/buffered_persister.rb
valkyrie-2.0.0 lib/valkyrie/persistence/buffered_persister.rb
valkyrie-2.0.0.RC10 lib/valkyrie/persistence/buffered_persister.rb
valkyrie-2.0.0.RC9 lib/valkyrie/persistence/buffered_persister.rb
valkyrie-1.7.1 lib/valkyrie/persistence/buffered_persister.rb
valkyrie-2.0.0.RC8 lib/valkyrie/persistence/buffered_persister.rb
valkyrie-1.7.0 lib/valkyrie/persistence/buffered_persister.rb
valkyrie-2.0.0.RC7 lib/valkyrie/persistence/buffered_persister.rb
valkyrie-2.0.0.RC6 lib/valkyrie/persistence/buffered_persister.rb
valkyrie-2.0.0.RC5 lib/valkyrie/persistence/buffered_persister.rb
valkyrie-2.0.0.RC4 lib/valkyrie/persistence/buffered_persister.rb
valkyrie-1.6.0 lib/valkyrie/persistence/buffered_persister.rb
valkyrie-1.5.1 lib/valkyrie/persistence/buffered_persister.rb
valkyrie-2.0.0.RC3 lib/valkyrie/persistence/buffered_persister.rb
valkyrie-1.5.0 lib/valkyrie/persistence/buffered_persister.rb