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
|