Module: ActiveRecord::Materialized::ViewQueryAccessClassMethods::ClassMethods

Extended by:
T::Sig
Defined in:
lib/activerecord/materialized/view_query_access_class_methods.rb

Overview

The read and refresh methods available on a ActiveRecord::Materialized::View subclass.

Instance Method Summary collapse

Instance Method Details

#all(*args) ⇒ Object



95
96
97
# File 'lib/activerecord/materialized/view_query_access_class_methods.rb', line 95

def all(*args)
  read_scope.all(*args)
end

#count(*args) ⇒ Object



115
116
117
# File 'lib/activerecord/materialized/view_query_access_class_methods.rb', line 115

def count(*args)
  read_scope.count(*args)
end

#dirty?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/activerecord/materialized/view_query_access_class_methods.rb', line 35

def dirty?
  view_class..dirty?
end

#find(*args) ⇒ Object



105
106
107
# File 'lib/activerecord/materialized/view_query_access_class_methods.rb', line 105

def find(*args)
  read_scope.find(*args)
end

#find_by(*args) ⇒ Object



110
111
112
# File 'lib/activerecord/materialized/view_query_access_class_methods.rb', line 110

def find_by(*args)
  partition_scope(args).find_by(*args)
end

#last_refreshed_atObject



52
53
54
# File 'lib/activerecord/materialized/view_query_access_class_methods.rb', line 52

def last_refreshed_at
  view_class..last_refreshed_at
end

#mark_dependencies_changed!Object



62
63
64
# File 'lib/activerecord/materialized/view_query_access_class_methods.rb', line 62

def mark_dependencies_changed!
  view_class..mark_dirty!
end

#materialized?Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/activerecord/materialized/view_query_access_class_methods.rb', line 47

def materialized?
  view_class.table_exists? && view_class..warm?
end

#rebuild!(confirm: false) ⇒ Object



85
86
87
88
89
90
91
92
# File 'lib/activerecord/materialized/view_query_access_class_methods.rb', line 85

def rebuild!(confirm: false)
  unless confirm
    Kernel.raise ArgumentError,
                 "#{view_class.name}.rebuild! performs a full materialization; call rebuild!(confirm: true)"
  end

  Refresher.new(view_class).rebuild!
end

#refresh!Object



73
74
75
# File 'lib/activerecord/materialized/view_query_access_class_methods.rb', line 73

def refresh!
  Refresher.new(view_class).refresh!
end

#refresh_if_stale!Object



78
79
80
# File 'lib/activerecord/materialized/view_query_access_class_methods.rb', line 78

def refresh_if_stale!
  refresh! if materialized? && stale?
end

#refreshing?Boolean

Returns:

  • (Boolean)


57
58
59
# File 'lib/activerecord/materialized/view_query_access_class_methods.rb', line 57

def refreshing?
  view_class..refreshing?
end

#stale?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/activerecord/materialized/view_query_access_class_methods.rb', line 30

def stale?
  view_class..stale?
end

#table_exists?Boolean

Returns:

  • (Boolean)


67
68
69
# File 'lib/activerecord/materialized/view_query_access_class_methods.rb', line 67

def table_exists?
  view_class.connection.data_source_exists?(view_class.table_name)
end

#view_classObject



25
26
27
# File 'lib/activerecord/materialized/view_query_access_class_methods.rb', line 25

def view_class
  T.cast(self, T.class_of(View))
end

#warm?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/activerecord/materialized/view_query_access_class_methods.rb', line 40

def warm?
  view_class..warm?
end

#where(*args) ⇒ Object



100
101
102
# File 'lib/activerecord/materialized/view_query_access_class_methods.rb', line 100

def where(*args)
  partition_scope(args).where(*args)
end