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.



228
229
230
231
232
233
234
235
236
237
238
239
# File 'lib/secure_db_fields/db_deployment.rb', line 228

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



241
242
243
244
245
246
247
248
249
# File 'lib/secure_db_fields/db_deployment.rb', line 241

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