Class: RailsRedshiftReplicator::Replication

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/rails_redshift_replicator/replication.rb

Constant Summary collapse

STATES =
%w(enqueued exporting exported uploading uploaded importing imported canceled)
FORMATS =
%w(gzip csv)

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.cap_id(table, cap) ⇒ Object



44
45
46
47
# File 'app/models/rails_redshift_replicator/replication.rb', line 44

def self.cap_id(table, cap)
  return unless cap
  where(source_table: table).order("id desc").limit(cap).pluck(:id)[cap-1]
end

Instance Method Details

#cancel!Object

Cancels the replication



31
32
33
# File 'app/models/rails_redshift_replicator/replication.rb', line 31

def cancel!
  update_attribute :state, 'canceled'
end

#clear_errors!Object

Clears the error column



15
16
17
# File 'app/models/rails_redshift_replicator/replication.rb', line 15

def clear_errors!
  update_attributes last_error: nil
end

#error?true, false

If replication is on an error state

Returns:

  • (true, false)

    if has error



21
22
23
# File 'app/models/rails_redshift_replicator/replication.rb', line 21

def error?
  last_error.present?
end

#formattrue, false

Builds helper methods to identify export format.

Returns:

  • (true, false)

    if export is in a given format.



51
52
53
54
55
56
57
58
# File 'app/models/rails_redshift_replicator/replication.rb', line 51

FORMATS.each do |format|
  # @example
  #   self.format = "gzip"
  #   self.csv? #=> false
  define_method "#{format}?" do
    export_format == format
  end
end

#ids_to_deleteArray

Returns ids from source_table to delete on the next replication.

Returns:

  • (Array)

    ids from source_table to delete on the next replication.



7
# File 'app/models/rails_redshift_replicator/replication.rb', line 7

serialize :ids_to_delete, Array

#replicableRailsRedshiftReplicator::Replicable

Returns replicable for this model/table.

Returns:



36
37
38
# File 'app/models/rails_redshift_replicator/replication.rb', line 36

def replicable
  RailsRedshiftReplicator.replicables[source_table]
end

#setup_target_tableObject

Initializes target table if it is blank



26
27
28
# File 'app/models/rails_redshift_replicator/replication.rb', line 26

def setup_target_table
  self.target_table = source_table if target_table.blank?
end