Class: Tidus::Postgresql::EmailAnonymizer

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

Class Method Summary collapse

Class Method Details

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



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

def self.anonymize(table_name, column_name, options = {})
  name = "#{table_name}.#{column_name}"
  length = options[:length] || 15
  anonymize_domain = options[:anonymize_domain] || false

  return "CASE WHEN ((#{name})::text ~~ '%@%'::text) " +
         "THEN (((\"left\"(md5((#{name})::text), #{length}) || '@'::text) " +
          "|| #{domain_part(name, anonymize_domain, length)}))::character varying " +
          "ELSE #{name} END"
end

.domain_part(name, anonymize_domain, length) ⇒ Object



16
17
18
19
20
21
22
23
# File 'lib/tidus/strategies/postgresql/email_anonymizer.rb', line 16

def self.domain_part(name, anonymize_domain, length)
  if anonymize_domain
    return "(\"left\"(md5(split_part((#{name})::text, '@'::text, 2)::text), #{length}) " +
           "|| '.com')"
  end

  return "split_part((#{name})::text, '@'::text, 2)"
end