Class: Draisine::Poller
- Inherits:
-
Object
- Object
- Draisine::Poller
- Defined in:
- lib/draisine/poller.rb
Defined Under Namespace
Classes: Result
Instance Attribute Summary collapse
-
#end_date ⇒ Object
readonly
Returns the value of attribute end_date.
-
#model_class ⇒ Object
readonly
Returns the value of attribute model_class.
-
#partition ⇒ Object
readonly
Returns the value of attribute partition.
-
#start_date ⇒ Object
readonly
Returns the value of attribute start_date.
Class Method Summary collapse
- .partition(model_class:, mechanism: :default, start_date:, end_date: Time.current, partition_size: 100) ⇒ Object
- .poll ⇒ Object
- .run(model_class:, mechanism: :default, start_date:, end_date: Time.current, **run_args) ⇒ Object
- .run_partition(partition, **run_args) ⇒ Object (also: poll_partition)
Instance Method Summary collapse
-
#initialize(partition) ⇒ Poller
constructor
A new instance of Poller.
- #run(import_created: true, import_updated: false, import_deleted: true) ⇒ Object (also: #poll)
Constructor Details
#initialize(partition) ⇒ Poller
Returns a new instance of Poller.
34 35 36 37 38 39 |
# File 'lib/draisine/poller.rb', line 34 def initialize(partition) @partition = partition @model_class = partition.model_class @start_date = partition.start_date @end_date = partition.end_date end |
Instance Attribute Details
#end_date ⇒ Object (readonly)
Returns the value of attribute end_date.
33 34 35 |
# File 'lib/draisine/poller.rb', line 33 def end_date @end_date end |
#model_class ⇒ Object (readonly)
Returns the value of attribute model_class.
33 34 35 |
# File 'lib/draisine/poller.rb', line 33 def model_class @model_class end |
#partition ⇒ Object (readonly)
Returns the value of attribute partition.
33 34 35 |
# File 'lib/draisine/poller.rb', line 33 def partition @partition end |
#start_date ⇒ Object (readonly)
Returns the value of attribute start_date.
33 34 35 |
# File 'lib/draisine/poller.rb', line 33 def start_date @start_date end |
Class Method Details
.partition(model_class:, mechanism: :default, start_date:, end_date: Time.current, partition_size: 100) ⇒ Object
17 18 19 20 21 22 23 24 |
# File 'lib/draisine/poller.rb', line 17 def partition(model_class:, mechanism: :default, start_date:, end_date: Time.current, partition_size: 100) Partitioner.partition( model_class: model_class, mechanism: mechanism, start_date: start_date, end_date: end_date, partition_size: partition_size) end |
.poll ⇒ Object
15 16 17 18 19 20 21 22 23 |
# File 'lib/draisine/poller.rb', line 15 def run(model_class:, mechanism: :default, start_date:, end_date: Time.current, **run_args) partitions = partition( model_class: model_class, mechanism: mechanism, start_date: start_date, end_date: end_date, partition_size: 10**12) run_partition(partitions.first, **run_args) end |
.run(model_class:, mechanism: :default, start_date:, end_date: Time.current, **run_args) ⇒ Object
6 7 8 9 10 11 12 13 14 |
# File 'lib/draisine/poller.rb', line 6 def run(model_class:, mechanism: :default, start_date:, end_date: Time.current, **run_args) partitions = partition( model_class: model_class, mechanism: mechanism, start_date: start_date, end_date: end_date, partition_size: 10**12) run_partition(partitions.first, **run_args) end |
.run_partition(partition, **run_args) ⇒ Object Also known as: poll_partition
26 27 28 |
# File 'lib/draisine/poller.rb', line 26 def run_partition(partition, **run_args) new(partition).run(**run_args) end |
Instance Method Details
#run(import_created: true, import_updated: false, import_deleted: true) ⇒ Object Also known as: poll
41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/draisine/poller.rb', line 41 def run(import_created: true, import_updated: false, import_deleted: true) created_count = updated_count = deleted_count = 0 if import_created || import_updated created_count, updated_count = import_changes(import_created, import_updated) end deleted_count = import_deletes if import_deleted Result.new( created_count, updated_count, deleted_count) end |