Sha256: 596c31eff3b2c3ed23ed24f0f6167a32936ae223280ee8b0c40605c9584d91e3

Contents?: true

Size: 1.36 KB

Versions: 3

Compression:

Stored size: 1.36 KB

Contents

# frozen_string_literal: true

module LinkedRails
  module Actions
    module DefaultActions
      module Destroy
        def has_resource_destroy_action(overwrite = {}) # rubocop:disable Naming/PredicateName
          has_resource_action(:destroy, destroy_resource_options(overwrite))
        end

        def has_singular_destroy_action(overwrite = {}) # rubocop:disable Naming/PredicateName
          has_singular_action(:destroy, destroy_singular_options(overwrite))
        end

        private

        def destroy_resource_options(overwrite = {})
          default_destroy_options(overwrite)
        end

        def destroy_singular_options(overwrite = {})
          default_destroy_options(
            url: -> { resource.singular_iri }
          ).merge(overwrite)
        end

        def default_destroy_options(overwrite = {}) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
          {
            http_method: :delete,
            image: 'fa-close',
            policy: :destroy?,
            root_relative_iri: lambda {
              uri = resource.root_relative_iri.dup
              uri.path ||= ''
              uri.path += '/delete'
              uri.to_s
            },
            type: [Vocab.schema.Action, Vocab.ontola[:DestroyAction]],
            url: -> { resource.iri(destroy: true) }
          }.merge(overwrite)
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
linked_rails-0.0.3 app/models/linked_rails/actions/default_actions/destroy.rb
linked_rails-0.0.2 app/models/linked_rails/actions/default_actions/destroy.rb
linked_rails-0.0.1 app/models/linked_rails/actions/default_actions/destroy.rb