kibitan/masking

View on GitHub
lib/masking/config/target_columns/method/type/string.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

require 'masking/config/target_columns/method/type/base'

module Masking
  class Config
    class TargetColumns
      class Method
        module Type
          class String < Base
            def initialize(value)
              super(value)
              @sequence = 0
            end

            def call(_sql_value)
              sequence!
              "'#{output}'".b
            end

            private

            SEQUENTIAL_NUMBER_PLACEHOLDER = '%{n}' # rubocop:disable Style/FormatStringToken

            def output
              value.sub(SEQUENTIAL_NUMBER_PLACEHOLDER, @sequence.to_s)
            end

            def sequence!
              @sequence += 1
            end
          end
        end
      end
    end
  end
end