Sha256: 1c82a42533c1805a0ebca111f3a0e6cf50cc5ca0136648d583028380552480ff
Contents?: true
Size: 1.55 KB
Versions: 2
Compression:
Stored size: 1.55 KB
Contents
# frozen_string_literal: true require 'masking/config/target_columns' require 'masking/insert_statement' module Masking # TODO: find better naming/modeling of DataMaskProcessor class DataMaskProcessor class << self def process(insert_statement_line, target_columns: ::Masking.config.target_columns) new(insert_statement_line, target_columns: target_columns).send(:process) end end private attr_reader :raw_line, :target_columns, :insert_statement def initialize(insert_statement_line, target_columns:) @raw_line = insert_statement_line @target_columns = target_columns @insert_statement = InsertStatement.new(insert_statement_line) end # TODO: define insert_statement.mask_values(column, mask_method) method & refactoring # rubocop:disable Metrics/AbcSize,Metrics/MethodLength def process return raw_line unless target_table? columns = target_columns.columns(table_name: insert_statement.table) if columns.first.index.nil? columns.each do |target_column| target_column.index = insert_statement.columns.index(target_column.name) end end insert_statement.values.each do |values| columns.each do |target_column| values[target_column.index] = target_column.masked_value unless target_column.index.nil? end end insert_statement.sql end # rubocop:enable Metrics/AbcSize,Metrics/MethodLength def target_table? target_columns.contains?(table_name: insert_statement.table) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
masking-1.0.0 | lib/masking/data_mask_processor.rb |
masking-0.0.3 | lib/masking/data_mask_processor.rb |