Class: DBPurger::PurgeTable

Inherits:
Object
  • Object
show all
Includes:
PurgeTableHelper
Defined in:
lib/db-purger/purge_table.rb

Overview

DBPurger::PurgeTable is used to delete table from tables in batches if possible

Instance Method Summary collapse

Constructor Details

#initialize(database, table, purge_field, purge_value) ⇒ PurgeTable

Returns a new instance of PurgeTable.



8
9
10
11
12
13
14
# File 'lib/db-purger/purge_table.rb', line 8

def initialize(database, table, purge_field, purge_value)
  @database = database
  @table = table
  @purge_field = purge_field
  @purge_value = purge_value
  @num_deleted = 0
end

Instance Method Details

#modelObject



16
17
18
# File 'lib/db-purger/purge_table.rb', line 16

def model
  @model ||= @database.models.detect { |m| m.table_name == @table.name.to_s }
end

#purge!Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/db-purger/purge_table.rb', line 20

def purge!
  ActiveSupport::Notifications.instrument('purge.db_purger',
                                          table_name: @table.name,
                                          purge_field: @purge_field) do |payload|
    if model.primary_key
      purge_in_batches!
    else
      purge_all!
    end
    purge_search_tables
    payload[:deleted] = @num_deleted
  end
  @num_deleted
end