Module: Hyrax::Transactions::Steps::DeleteAllFileSetsDecorator

Defined in:
app/transactions/hyrax/transactions/steps/delete_all_file_sets_decorator.rb

Instance Method Summary collapse

Instance Method Details

#call(resource, user: nil) ⇒ Dry::Monads::Result

Parameters:

  • resource (Valkyrie::Resource)
  • the (::User)

    user resposible for the delete action

Returns:

  • (Dry::Monads::Result)


16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'app/transactions/hyrax/transactions/steps/delete_all_file_sets_decorator.rb', line 16

def call(resource, user: nil)
  return Failure(:resource_not_persisted) unless resource.persisted?

  @query_service.custom_queries.find_child_file_sets(resource: resource).each do |file_set|
    return Failure[:failed_to_delete_file_set, file_set] unless
      Hyrax::Transactions::Container['file_set.destroy']
      .with_step_args('file_set.remove_from_work' => { user: user },
                      'file_set.delete' => { user: user },
                      'file_set.iiif_print_conditionally_destroy_spawned_children' => { user: user })
      .call(file_set).success?
  rescue ::Ldp::Gone
    nil
  end

  Success(resource)
end