Module: ActiveMatrix::AsyncQuery
- Defined in:
- lib/active_matrix/async_query.rb
Overview
Helper methods for async ActiveRecord queries (Rails 8.0+)
Class Method Summary collapse
-
.async_count(relation) ⇒ Integer
Count records asynchronously.
-
.async_exists?(relation) ⇒ Boolean
Check existence asynchronously.
-
.async_pluck(relation, *columns) ⇒ Array
Pluck columns asynchronously.
-
.async_sum(relation, column) ⇒ Numeric
Sum column asynchronously.
-
.load_async(relation) ⇒ Array
Load records asynchronously.
-
.parallel(**queries) ⇒ Hash<Symbol, Object>
Execute multiple async queries in parallel and wait for all results.
Class Method Details
.async_count(relation) ⇒ Integer
Count records asynchronously
18 19 20 |
# File 'lib/active_matrix/async_query.rb', line 18 def async_count(relation) relation.async_count.value end |
.async_exists?(relation) ⇒ Boolean
Check existence asynchronously
41 42 43 |
# File 'lib/active_matrix/async_query.rb', line 41 def async_exists?(relation) relation.async_count.value.positive? end |
.async_pluck(relation, *columns) ⇒ Array
Pluck columns asynchronously
34 35 36 |
# File 'lib/active_matrix/async_query.rb', line 34 def async_pluck(relation, *columns) relation.async_pluck(*columns).value end |
.async_sum(relation, column) ⇒ Numeric
Sum column asynchronously
26 27 28 |
# File 'lib/active_matrix/async_query.rb', line 26 def async_sum(relation, column) relation.async_sum(column).value end |
.load_async(relation) ⇒ Array
Load records asynchronously
11 12 13 |
# File 'lib/active_matrix/async_query.rb', line 11 def load_async(relation) relation.load_async.to_a end |
.parallel(**queries) ⇒ Hash<Symbol, Object>
Execute multiple async queries in parallel and wait for all results
53 54 55 56 |
# File 'lib/active_matrix/async_query.rb', line 53 def parallel(**queries) promises = queries.transform_values(&:call) promises.transform_values { |result| result.respond_to?(:value) ? result.value : result } end |