module DbObfuscation

Constants

DB
ROOT
VERSION

Attributes

config_dir[RW]
logging[RW]

Public Instance Methods

obfuscate(step) click to toggle source
# File lib/db_obfuscation.rb, line 10
def obfuscate(step)
  config = Filtering.obfuscation_config([:string])
  config.each do |table, cfg|
    DbObfuscation.logging.info "Obfuscating #{table}"
    update(table, cfg, step)
  end
end

Private Instance Methods

date_columns(config) click to toggle source
# File lib/db_obfuscation.rb, line 34
def date_columns(config)
  config.select do |k,v|
    v == :date_strategy
  end.keys
end
ids(table) click to toggle source
# File lib/db_obfuscation.rb, line 40
def ids(table)
  DB[table].map(:id)
end
multi_update(table, batch, date_columns) click to toggle source
# File lib/db_obfuscation.rb, line 44
def multi_update(table, batch, date_columns)
  sql_query = QueryBuilder.multi_update_sql(table,
                                            batch,
                                            date_columns)
  DB.run sql_query
end
update(table, config, step) click to toggle source
# File lib/db_obfuscation.rb, line 20
def update(table, config, step)
  ids(table).each_slice(step) do |ids|
    begin
      batch = BatchFormulator.batch_for(config, ids)
      date_columns = date_columns(config)
      multi_update(table, batch, date_columns) unless batch.empty?
    rescue => e
      DbObfuscation.logging.error 'Encountered Exception'
      DbObfuscation.logging.error "#{table} encountered #{e.message}"
      DbObfuscation.logging.error e.backtrace
    end
  end
end