Class: ActiveRecord::Materialized::RefreshResult

Inherits:
Data
  • Object
show all
Defined in:
lib/activerecord/materialized/refresh_result.rb

Overview

The outcome of a refresh or rebuild, returned by refresh!, rebuild!, and refresh_if_stale!.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(view_class:, row_count:, duration_ms:, refreshed_at: nil, skipped: false) ⇒ RefreshResult

Returns a new instance of RefreshResult.



21
# File 'lib/activerecord/materialized/refresh_result.rb', line 21

def initialize(view_class:, row_count:, duration_ms:, refreshed_at: nil, skipped: false) = super

Instance Attribute Details

#duration_msInteger (readonly)

Returns wall-clock duration in milliseconds.

Returns:

  • (Integer)

    wall-clock duration in milliseconds



20
21
22
23
24
25
26
27
28
29
30
# File 'lib/activerecord/materialized/refresh_result.rb', line 20

RefreshResult = Data.define(:view_class, :row_count, :duration_ms, :refreshed_at, :skipped) do
  def initialize(view_class:, row_count:, duration_ms:, refreshed_at: nil, skipped: false) = super

  # A no-op result, returned when refresh! was requested on a view that is
  # not maintainable.
  #
  # @return [RefreshResult]
  def self.skipped(view_class)
    new(view_class: view_class, row_count: 0, duration_ms: 0, refreshed_at: nil, skipped: true)
  end
end

#refreshed_atTime? (readonly)

Returns when the refresh completed (nil when skipped).

Returns:

  • (Time, nil)

    when the refresh completed (nil when skipped)



20
21
22
23
24
25
26
27
28
29
30
# File 'lib/activerecord/materialized/refresh_result.rb', line 20

RefreshResult = Data.define(:view_class, :row_count, :duration_ms, :refreshed_at, :skipped) do
  def initialize(view_class:, row_count:, duration_ms:, refreshed_at: nil, skipped: false) = super

  # A no-op result, returned when refresh! was requested on a view that is
  # not maintainable.
  #
  # @return [RefreshResult]
  def self.skipped(view_class)
    new(view_class: view_class, row_count: 0, duration_ms: 0, refreshed_at: nil, skipped: true)
  end
end

#row_countInteger (readonly)

Returns rows in the cache table after the operation.

Returns:

  • (Integer)

    rows in the cache table after the operation



20
21
22
23
24
25
26
27
28
29
30
# File 'lib/activerecord/materialized/refresh_result.rb', line 20

RefreshResult = Data.define(:view_class, :row_count, :duration_ms, :refreshed_at, :skipped) do
  def initialize(view_class:, row_count:, duration_ms:, refreshed_at: nil, skipped: false) = super

  # A no-op result, returned when refresh! was requested on a view that is
  # not maintainable.
  #
  # @return [RefreshResult]
  def self.skipped(view_class)
    new(view_class: view_class, row_count: 0, duration_ms: 0, refreshed_at: nil, skipped: true)
  end
end

#skippedBoolean (readonly)

Returns true when there was nothing to do (e.g. an unmaintainable view).

Returns:

  • (Boolean)

    true when there was nothing to do (e.g. an unmaintainable view)



20
21
22
23
24
25
26
27
28
29
30
# File 'lib/activerecord/materialized/refresh_result.rb', line 20

RefreshResult = Data.define(:view_class, :row_count, :duration_ms, :refreshed_at, :skipped) do
  def initialize(view_class:, row_count:, duration_ms:, refreshed_at: nil, skipped: false) = super

  # A no-op result, returned when refresh! was requested on a view that is
  # not maintainable.
  #
  # @return [RefreshResult]
  def self.skipped(view_class)
    new(view_class: view_class, row_count: 0, duration_ms: 0, refreshed_at: nil, skipped: true)
  end
end

#view_classClass (readonly)

Returns the view that was refreshed.

Returns:

  • (Class)

    the view that was refreshed



20
21
22
23
24
25
26
27
28
29
30
# File 'lib/activerecord/materialized/refresh_result.rb', line 20

RefreshResult = Data.define(:view_class, :row_count, :duration_ms, :refreshed_at, :skipped) do
  def initialize(view_class:, row_count:, duration_ms:, refreshed_at: nil, skipped: false) = super

  # A no-op result, returned when refresh! was requested on a view that is
  # not maintainable.
  #
  # @return [RefreshResult]
  def self.skipped(view_class)
    new(view_class: view_class, row_count: 0, duration_ms: 0, refreshed_at: nil, skipped: true)
  end
end

Class Method Details

.skipped(view_class) ⇒ RefreshResult

A no-op result, returned when refresh! was requested on a view that is not maintainable.

Returns:



27
28
29
# File 'lib/activerecord/materialized/refresh_result.rb', line 27

def self.skipped(view_class)
  new(view_class: view_class, row_count: 0, duration_ms: 0, refreshed_at: nil, skipped: true)
end