Sha256: 381f3ad511953628e899ac98e1bfc81ddc953e16254c46f20766a371b262d303

Contents?: true

Size: 1 KB

Versions: 1

Compression:

Stored size: 1 KB

Contents

module DataMapper
  module Queries
    
    class CreateTableStatement
      
      def initialize(database, klass)
        @database, @klass = database, klass
      end
      
      def to_sql
        table = @database[@klass]
        
        sql = "CREATE TABLE " << table.to_sql << " ("
        
        sql << table.columns.map do |column|
          column_long_form(column)
        end.join(', ')
        
        sql << ", PRIMARY KEY (#{table.key.to_sql}))"
        
        return sql
      end
      
      def column_long_form(column)
        long_form = "#{column.to_sql} #{@database.adapter.class::TYPES[column.type] || column.type}"
        
        long_form << "(#{column.size})" unless column.size.nil?
        long_form << " NOT NULL" unless column.nullable?
        long_form << " " << @database.syntax(:auto_increment) if column.key?
        long_form << " default #{column.options[:default]}" if column.options.has_key?(:default)
        
        return long_form
      end
      
    end
    
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
datamapper-0.1.0 lib/data_mapper/queries/create_table_statement.rb