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