Sha256: 7e35cfbac557a60ef1551f83bce8379c4b3ac50c3d9c13b85eb847a10514def0

Contents?: true

Size: 1.52 KB

Versions: 16

Compression:

Stored size: 1.52 KB

Contents

# frozen_string_literal: true
require 'dry/monads'

module Hyrax
  module Transactions
    module Steps
      ##
      # Deletes a resource from the persister, returning a `Dry::Monads::Result`
      # (`Success`|`Failure`).
      #
      # @see https://dry-rb.org/gems/dry-monads/1.0/result/
      class DeleteResource
        include Dry::Monads[:result]

        ##
        # @params [#save] persister
        def initialize(persister: Hyrax.persister, publisher: Hyrax.publisher)
          @persister = persister
          @publisher = publisher
        end

        ##
        # @param [Valkyrie::Resource] resource
        # @param [::User] the user resposible for the delete action
        #
        # @return [Dry::Monads::Result]
        def call(resource, user: nil)
          return Failure(:resource_not_persisted) unless resource.persisted?

          @persister.delete(resource: resource)
          publish_changes(resource: resource, user: user)

          Success(resource)
        end

        private

        def publish_changes(resource:, user:)
          if resource.collection?
            @publisher.publish('collection.deleted',
                               collection: resource,
                               id: resource.id.id,
                               user: user)
          else
            @publisher.publish('object.deleted',
                               object: resource,
                               id: resource.id.id,
                               user: user)
          end
        end
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
hyrax-5.0.1 lib/hyrax/transactions/steps/delete_resource.rb
hyrax-5.0.0 lib/hyrax/transactions/steps/delete_resource.rb
hyrax-5.0.0.rc3 lib/hyrax/transactions/steps/delete_resource.rb
hyrax-5.0.0.rc2 lib/hyrax/transactions/steps/delete_resource.rb
hyrax-5.0.0.rc1 lib/hyrax/transactions/steps/delete_resource.rb
hyrax-3.6.0 lib/hyrax/transactions/steps/delete_resource.rb
hyrax-4.0.0 lib/hyrax/transactions/steps/delete_resource.rb
hyrax-4.0.0.rc3 lib/hyrax/transactions/steps/delete_resource.rb
hyrax-4.0.0.rc2 lib/hyrax/transactions/steps/delete_resource.rb
hyrax-4.0.0.rc1 lib/hyrax/transactions/steps/delete_resource.rb
hyrax-3.5.0 lib/hyrax/transactions/steps/delete_resource.rb
hyrax-4.0.0.beta2 lib/hyrax/transactions/steps/delete_resource.rb
hyrax-3.4.2 lib/hyrax/transactions/steps/delete_resource.rb
hyrax-4.0.0.beta1 lib/hyrax/transactions/steps/delete_resource.rb
hyrax-3.4.1 lib/hyrax/transactions/steps/delete_resource.rb
hyrax-3.4.0 lib/hyrax/transactions/steps/delete_resource.rb