Class: Tidus::Postgresql::EmailAnonymizer
- Inherits:
-
Object
- Object
- Tidus::Postgresql::EmailAnonymizer
- Defined in:
- lib/tidus/strategies/postgresql/email_anonymizer.rb
Class Method Summary collapse
- .anonymize(table_name, column_name, options = {}) ⇒ Object
- .domain_part(name, anonymize_domain, length) ⇒ Object
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, = {}) name = "#{table_name}.#{column_name}" length = [:length] || 15 anonymize_domain = [: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 |