Class: Draisine::Poller

Inherits:
Object
  • Object
show all
Defined in:
lib/draisine/poller.rb

Defined Under Namespace

Classes: Result

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

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_dateObject (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_classObject (readonly)

Returns the value of attribute model_class.



33
34
35
# File 'lib/draisine/poller.rb', line 33

def model_class
  @model_class
end

#partitionObject (readonly)

Returns the value of attribute partition.



33
34
35
# File 'lib/draisine/poller.rb', line 33

def partition
  @partition
end

#start_dateObject (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

.pollObject



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