Class: Tidus::Postgresql::RemoveJsonKeysAnonymizer

Inherits:
Object
  • Object
show all
Defined in:
lib/tidus/strategies/postgresql/remove_json_keys_anonymizer.rb

Class Method Summary collapse

Class Method Details

.anonymize(table_name, column_name, options = {}) ⇒ Object



6
7
8
9
10
11
12
13
14
15
# File 'lib/tidus/strategies/postgresql/remove_json_keys_anonymizer.rb', line 6

def self.anonymize(table_name, column_name, options = {})
  name = "#{table_name}.#{column_name}"

  raise "Missing option :keys for RemoveJsonKeysAnonymizer on #{name}" if options[:keys].blank?

  removed_keys = options[:keys].map { |k| "key <> '#{k}'" }.join(" AND ")

  return "(SELECT concat('{', string_agg(to_json(\"key\") || ':' || \"value\", ','), '}')::json " +
         "FROM json_each(#{name}::json) WHERE #{removed_keys})"
end