Module: ActiveRecord::Materialized::QueryExpressions
- Defined in:
- lib/activerecord/materialized/query_expressions.rb
Overview
Portable, aliased Arel aggregate helpers for building a view's
source relation without raw SQL. extend it into a view (or any object) so the
helpers are available where you build the relation.
Class Method Summary collapse
-
.avg_as(attribute, as:) ⇒ Arel::Nodes::As
AVG(attribute) AS <as>. -
.count_all_as(as:) ⇒ Arel::Nodes::As
COUNT(*) AS <as>— a trustworthy per-partition row count. -
.count_as(attribute, as:) ⇒ Arel::Nodes::As
COUNT(attribute) AS <as>(non-null values). -
.count_distinct_as(attribute, as:) ⇒ Arel::Nodes::As
COUNT(DISTINCT attribute) AS <as>. -
.length(attribute) ⇒ Arel::Nodes::NamedFunction
LENGTH(attribute). -
.max_as(attribute, as:) ⇒ Arel::Nodes::As
MAX(attribute) AS <as>. -
.min_as(attribute, as:) ⇒ Arel::Nodes::As
MIN(attribute) AS <as>. -
.sum_as(attribute, as:) ⇒ Arel::Nodes::As
SUM(attribute) AS <as>. -
.sum_length_as(attribute, as:) ⇒ Arel::Nodes::As
SUM(LENGTH(attribute)) AS <as>.
Class Method Details
.avg_as(attribute, as:) ⇒ Arel::Nodes::As
Returns AVG(attribute) AS <as>.
31 32 33 |
# File 'lib/activerecord/materialized/query_expressions.rb', line 31 def avg_as(attribute, as:) attribute.average.as(as.to_s) end |
.count_all_as(as:) ⇒ Arel::Nodes::As
Returns COUNT(*) AS <as> — a trustworthy per-partition row count.
46 47 48 |
# File 'lib/activerecord/materialized/query_expressions.rb', line 46 def count_all_as(as:) Arel.star.count.as(as.to_s) end |
.count_as(attribute, as:) ⇒ Arel::Nodes::As
Returns COUNT(attribute) AS <as> (non-null values).
51 52 53 |
# File 'lib/activerecord/materialized/query_expressions.rb', line 51 def count_as(attribute, as:) attribute.count.as(as.to_s) end |
.count_distinct_as(attribute, as:) ⇒ Arel::Nodes::As
Returns COUNT(DISTINCT attribute) AS <as>.
56 57 58 |
# File 'lib/activerecord/materialized/query_expressions.rb', line 56 def count_distinct_as(attribute, as:) attribute.count(true).as(as.to_s) end |
.length(attribute) ⇒ Arel::Nodes::NamedFunction
Returns LENGTH(attribute).
61 62 63 |
# File 'lib/activerecord/materialized/query_expressions.rb', line 61 def length(attribute) Arel::Nodes::NamedFunction.new("LENGTH", [attribute]) end |
.max_as(attribute, as:) ⇒ Arel::Nodes::As
Returns MAX(attribute) AS <as>.
41 42 43 |
# File 'lib/activerecord/materialized/query_expressions.rb', line 41 def max_as(attribute, as:) attribute.maximum.as(as.to_s) end |
.min_as(attribute, as:) ⇒ Arel::Nodes::As
Returns MIN(attribute) AS <as>.
36 37 38 |
# File 'lib/activerecord/materialized/query_expressions.rb', line 36 def min_as(attribute, as:) attribute.minimum.as(as.to_s) end |
.sum_as(attribute, as:) ⇒ Arel::Nodes::As
Returns SUM(attribute) AS <as>.
26 27 28 |
# File 'lib/activerecord/materialized/query_expressions.rb', line 26 def sum_as(attribute, as:) attribute.sum.as(as.to_s) end |
.sum_length_as(attribute, as:) ⇒ Arel::Nodes::As
Returns SUM(LENGTH(attribute)) AS <as>.
66 67 68 |
# File 'lib/activerecord/materialized/query_expressions.rb', line 66 def sum_length_as(attribute, as:) length(attribute).sum.as(as.to_s) end |