Sha256: bd3c0a4e7bcb15b63f4bb18d3a624132f600b3426627c866f718b63f77d0eb8e

Contents?: true

Size: 1.79 KB

Versions: 12

Compression:

Stored size: 1.79 KB

Contents

# frozen_string_literal: true
module Bulkrax
  module StatusInfo
    extend ActiveSupport::Concern

    included do
      has_many :statuses, as: :statusable, dependent: :destroy
      has_one :latest_status,
              -> { merge(Status.latest_by_statusable) },
              as: :statusable,
              class_name: "Bulkrax::Status",
              inverse_of: :statusable
    end

    def current_status
      last_status = self.statuses.last
      last_status if last_status && last_status.runnable == last_run
    end

    def failed?
      current_status&.status_message&.eql?('Failed')
    end

    def succeeded?
      current_status&.status_message&.match(/^Complete$/)
    end

    def status
      current_status&.status_message || 'Pending'
    end

    def status_at
      current_status&.created_at
    end

    def set_status_info(e = nil, current_run = nil)
      runnable = current_run || last_run
      if e.nil?
        self.statuses.create!(status_message: 'Complete', runnable: runnable)
      elsif e.is_a?(String)
        self.statuses.create!(status_message: e, runnable: runnable)
      else
        self.statuses.create!(status_message: 'Failed', runnable: runnable, error_class: e.class.to_s, error_message: e.message, error_backtrace: e.backtrace)
      end
    end

    alias status_info set_status_info

    deprecation_deprecate status_info: "Favor Bulkrax::StatusInfo.set_status_info.  We will be removing .status_info in Bulkrax v6.0.0"

    # api compatible with previous error structure
    def last_error
      return unless current_status && current_status.error_class.present?
      {
        error_class: current_status.error_class,
        error_message: current_status.error_message,
        error_trace: current_status.error_backtrace
      }.with_indifferent_access
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
bulkrax-5.5.1 app/models/concerns/bulkrax/status_info.rb
bulkrax-5.4.2 app/models/concerns/bulkrax/status_info.rb
bulkrax-5.3.1 app/models/concerns/bulkrax/status_info.rb
bulkrax-6.0.1 app/models/concerns/bulkrax/status_info.rb
bulkrax-6.0.0 app/models/concerns/bulkrax/status_info.rb
bulkrax-5.5.0 app/models/concerns/bulkrax/status_info.rb
bulkrax-5.4.1 app/models/concerns/bulkrax/status_info.rb
bulkrax-5.4.0 app/models/concerns/bulkrax/status_info.rb
bulkrax-5.3.0 app/models/concerns/bulkrax/status_info.rb
bulkrax-5.2.1 app/models/concerns/bulkrax/status_info.rb
bulkrax-5.2.0 app/models/concerns/bulkrax/status_info.rb
bulkrax-5.1.0 app/models/concerns/bulkrax/status_info.rb