Class: QueryBatchRequest
- Inherits:
-
Object
- Object
- QueryBatchRequest
- Defined in:
- lib/query_batch_request.rb
Overview
Facilitate Batch updates using the pattern of
filter_query -> objects to update
stub object -> attributes/params to update
!! Should say nothing about how to update the objects.
Instance Attribute Summary collapse
-
#async ⇒ Object
Boolean whether to run the job asyncronously.
-
#async_cutoff ⇒ Object
Number of records at which process is automatically made async.
-
#cap ⇒ Object
Nil, Integer the max allowed records.
-
#cap_reason ⇒ Object
String, nil the reason the cap is why it is (not required).
-
#filter ⇒ Object
A Queries::<<klass>>::Filter instance.
-
#klass ⇒ Object
String defines the Filter/Model to act on.
- #object_filter_params ⇒ Object
- #object_params ⇒ Object
-
#preview ⇒ Object
Boolean true - rollback changes, can not be used with async.
-
#total_attempted ⇒ Object
Count of the records retured in filter.
Instance Method Summary collapse
- #capped? ⇒ Boolean
- #infer_class(params) ⇒ Object
-
#initialize(params) ⇒ QueryBatchRequest
constructor
A new instance of QueryBatchRequest.
- #response_params ⇒ Object
- #run_async? ⇒ Boolean
- #stub_response ⇒ Object
- #unprocessable? ⇒ Boolean
Constructor Details
#initialize(params) ⇒ QueryBatchRequest
Returns a new instance of QueryBatchRequest.
48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/query_batch_request.rb', line 48 def initialize(params) @async = params[:async] @async_cutoff = params[:async_cutoff] @cap = params[:cap] @cap_reason = params[:cap_reason] @klass = params[:klass] # || infer_class(params) @object_filter_params = params[:object_filter_params] @object_params = params[:object_params] @preview = params[:preview] @mode = params[:mode] end |
Instance Attribute Details
#async ⇒ Object
Returns Boolean whether to run the job asyncronously.
24 25 26 |
# File 'lib/query_batch_request.rb', line 24 def async @async end |
#async_cutoff ⇒ Object
Number of records at which process is automatically made async
27 28 29 |
# File 'lib/query_batch_request.rb', line 27 def async_cutoff @async_cutoff end |
#cap ⇒ Object
Returns nil, Integer the max allowed records.
31 32 33 |
# File 'lib/query_batch_request.rb', line 31 def cap @cap end |
#cap_reason ⇒ Object
Returns String, nil the reason the cap is why it is (not required).
35 36 37 |
# File 'lib/query_batch_request.rb', line 35 def cap_reason @cap_reason end |
#filter ⇒ Object
Returns a Queries::<<klass>>::Filter instance.
42 43 44 |
# File 'lib/query_batch_request.rb', line 42 def filter @filter end |
#klass ⇒ Object
Returns String defines the Filter/Model to act on.
39 40 41 |
# File 'lib/query_batch_request.rb', line 39 def klass @klass end |
#object_filter_params ⇒ Object
16 17 18 |
# File 'lib/query_batch_request.rb', line 16 def object_filter_params @object_filter_params end |
#object_params ⇒ Object
11 12 13 |
# File 'lib/query_batch_request.rb', line 11 def object_params @object_params end |
#preview ⇒ Object
Returns Boolean true - rollback changes, can not be used with async.
20 21 22 |
# File 'lib/query_batch_request.rb', line 20 def preview @preview end |
#total_attempted ⇒ Object
Count of the records retured in filter.
Not used in async
46 47 48 |
# File 'lib/query_batch_request.rb', line 46 def total_attempted @total_attempted end |
Instance Method Details
#capped? ⇒ Boolean
102 103 104 105 106 107 108 109 |
# File 'lib/query_batch_request.rb', line 102 def capped? if total_attempted > cap @cap_reason = "Update to more objects than allowed (#{cap}) requested." if cap_reason.blank? return true else false end end |
#infer_class(params) ⇒ Object
61 62 63 64 |
# File 'lib/query_batch_request.rb', line 61 def infer_class(params) f = Queries::Query::Filter.base_filter(params) @klass = f.referenced_class.name.to_s end |
#response_params ⇒ Object
86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/query_batch_request.rb', line 86 def response_params { klass:, async:, async_cutoff:, preview:, cap:, cap_reason:, total_attempted: } end |
#run_async? ⇒ Boolean
111 112 113 114 115 |
# File 'lib/query_batch_request.rb', line 111 def run_async? if async_cutoff return total_attempted > async_cutoff end end |
#stub_response ⇒ Object
98 99 100 |
# File 'lib/query_batch_request.rb', line 98 def stub_response BatchResponse.new(response_params) end |
#unprocessable? ⇒ Boolean
70 71 72 |
# File 'lib/query_batch_request.rb', line 70 def unprocessable? object_filter_params.blank? || object_params.blank? || (run_async? && preview) end |