Sha256: 298cca7403393c089f3795092ac46da80bef603cdda3bfbbfd1a4bce046d399a
Contents?: true
Size: 1.41 KB
Versions: 1
Compression:
Stored size: 1.41 KB
Contents
module FlareUp module Command class CreateTable < Command::Base attr_reader :columns def initialize(*args) @columns = [] super end # http://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_TABLE_NEW.html def get_command "CREATE TABLE #{@table_name} #{get_columns} #{@options}" end # a little different than copy... the columns argument will have parentheses # (since it specifies a schema, where the datatypes may require parentheses) # and will need to be enclosed in quotes, and therefore the argument arrives # here as a single membered array. This method corrects this difference between # copy and create table by splitting on spaces, so that the columns are stored # in the same fashion between the two classes, though they arrive in different # forms to this method. def columns=(columns) raise ArgumentError, 'Columns must be a string' unless columns.is_a?(String) columns_separated = columns.split(' ') raise ArgumentError, 'Columns must have a data type for each name' unless columns_separated.length % 2 == 0 @columns = columns_separated end private def get_columns return '' if columns.empty? name_type_pairs = @columns.each_slice(2).map { |name, type| "#{name} #{type}" } "(#{name_type_pairs.join(', ').strip})" end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
flare-up-0.10 | lib/flare_up/command/create_table.rb |