Class: SecureDBFields::DBDeployment::ReadableView

Inherits:
Object
  • Object
show all
Defined in:
lib/secure_db_fields/db_deployment.rb

Constant Summary collapse

IDENTIFIER =
ViewCommand::IDENTIFIER
QUALIFIED_IDENTIFIER =
ViewCommand::QUALIFIED_IDENTIFIER

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ ReadableView

Returns a new instance of ReadableView.



143
144
145
146
147
148
149
150
151
152
153
154
# File 'lib/secure_db_fields/db_deployment.rb', line 143

def initialize(options)
  @table = qualified_identifier!(options.fetch(:table), "--table")
  @view = qualified_identifier!(options.fetch(:view), "--view")
  @uid_column = identifier!(options.fetch(:uid_column), "--uid-column")
  field = options.fetch(:field)
  @plain_field, @encrypted_column = parse_field(field)
  @alias = identifier!(options[:as] || @plain_field, "--as")
  @columns = Array(options.fetch(:columns)).map { |column| identifier!(column, "--columns") }
  @aad_table = @table.split(".").last
rescue KeyError => e
  raise OptionParser::MissingArgument, e.key.to_s
end

Instance Method Details

#to_sqlObject



156
157
158
159
160
161
162
163
164
# File 'lib/secure_db_fields/db_deployment.rb', line 156

def to_sql
  select_list = (@columns.map { |column| "  `#{column}`" } + [decrypt_expression]).join(",\n")
  <<~SQL
    CREATE OR REPLACE ALGORITHM=MERGE VIEW #{quote_qualified(@view)} AS
    SELECT
    #{select_list}
    FROM #{quote_qualified(@table)};
  SQL
end