class DBPurger::Plan

DBPurger::Plan is used to describe the relationship between tables

Attributes

base_table[RW]
child_tables[R]
ignore_tables[R]
parent_tables[R]
search_tables[R]

Public Class Methods

new() click to toggle source
# File lib/db-purger/plan.rb, line 13
def initialize
  @parent_tables = []
  @child_tables = []
  @ignore_tables = []
  @search_tables = []
end

Public Instance Methods

empty?() click to toggle source
# File lib/db-purger/plan.rb, line 46
def empty?
  @base_table.nil? &&
    @parent_tables.empty? &&
    @child_tables.empty? &&
    @search_tables.empty?
end
foreign_tables() click to toggle source
# File lib/db-purger/plan.rb, line 35
def foreign_tables
  (@base_table ? [@base_table] : []) +
    @parent_tables +
    @child_tables +
    @search_tables
end
ignore_table?(table_name) click to toggle source
# File lib/db-purger/plan.rb, line 53
def ignore_table?(table_name)
  @ignore_tables.any? do |ignore_table_name|
    if ignore_table_name.is_a?(Regexp)
      ignore_table_name.match(table_name)
    else
      ignore_table_name.to_s == table_name
    end
  end
end
purge!(database, purge_value) click to toggle source
# File lib/db-purger/plan.rb, line 20
def purge!(database, purge_value)
  MetricSubscriber.reset!
  PurgeTable.new(database, @base_table, @base_table.field, purge_value).purge!
end
table_names() click to toggle source
# File lib/db-purger/plan.rb, line 42
def table_names
  tables.map(&:name)
end
tables() click to toggle source
# File lib/db-purger/plan.rb, line 25
def tables
  all_tables = @base_table ? [@base_table] + @base_table.tables : []
  all_tables += @parent_tables + @parent_tables.map(&:tables) +
                @child_tables + @child_tables.map(&:tables) +
                @search_tables + @search_tables.map(&:tables)
  all_tables.flatten!
  all_tables.compact!
  all_tables
end