Class: Masking::InsertStatement
- Inherits:
-
Object
- Object
- Masking::InsertStatement
- Defined in:
- lib/masking/insert_statement.rb,
lib/masking/insert_statement/sql_builder.rb
Defined Under Namespace
Classes: SQLBuilder
Instance Attribute Summary collapse
-
#raw_statement ⇒ Object
readonly
Returns the value of attribute raw_statement.
-
#table ⇒ Object
readonly
Returns the value of attribute table.
Instance Method Summary collapse
- #column_index(column_name) ⇒ Object
- #columns ⇒ Object
-
#initialize(raw_statement, sql_builder: SQLBuilder) ⇒ InsertStatement
constructor
A new instance of InsertStatement.
- #mask_value(column_index:, mask_method:) ⇒ Object
- #sql ⇒ Object
- #values ⇒ Object
Constructor Details
#initialize(raw_statement, sql_builder: SQLBuilder) ⇒ InsertStatement
Returns a new instance of InsertStatement.
10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/masking/insert_statement.rb', line 10 def initialize(raw_statement, sql_builder: SQLBuilder) @raw_statement = raw_statement @sql_builder = sql_builder PARSE_REGEXP.match(raw_statement).tap do |match_data| raise Error::InsertStatementParseError if match_data.nil? @table = match_data[:table] @columns_section = match_data[:columns_section] @values_section = match_data[:values_section] end end |
Instance Attribute Details
#raw_statement ⇒ Object (readonly)
Returns the value of attribute raw_statement.
8 9 10 |
# File 'lib/masking/insert_statement.rb', line 8 def raw_statement @raw_statement end |
#table ⇒ Object (readonly)
Returns the value of attribute table.
8 9 10 |
# File 'lib/masking/insert_statement.rb', line 8 def table @table end |
Instance Method Details
#column_index(column_name) ⇒ Object
27 28 29 |
# File 'lib/masking/insert_statement.rb', line 27 def column_index(column_name) columns.index(column_name) end |
#columns ⇒ Object
23 24 25 |
# File 'lib/masking/insert_statement.rb', line 23 def columns @columns ||= columns_section.scan(COLUMNS_REGEXP).flatten.map(&:to_sym) end |
#mask_value(column_index:, mask_method:) ⇒ Object
37 38 39 40 41 |
# File 'lib/masking/insert_statement.rb', line 37 def mask_value(column_index:, mask_method:) values.each do |value| value[column_index] = mask_method.call(value[column_index]) end end |
#sql ⇒ Object
43 44 45 |
# File 'lib/masking/insert_statement.rb', line 43 def sql sql_builder.new(table: table, columns: columns, values: values).sql end |
#values ⇒ Object
31 32 33 34 35 |
# File 'lib/masking/insert_statement.rb', line 31 def values @values ||= values_section.split(VALUE_ROW_SPLITTER) .tap { |rows| rows.each_with_index { |_, i| recursive_pattern_value_concat(rows, i) } } .flat_map { |row| row.scan(values_regexp) } end |