Class: KnjDB_mysql::Columns

Inherits:
Object show all
Defined in:
lib/knj/knjdb/drivers/mysql/knjdb_mysql_columns.rb

Overview

This class handels various MySQL-column-specific operations.

Defined Under Namespace

Classes: Column

Instance Method Summary collapse

Constructor Details

#initialize(args) ⇒ Columns

Constructor. Should not be called manually.



4
5
6
# File 'lib/knj/knjdb/drivers/mysql/knjdb_mysql_columns.rb', line 4

def initialize(args)
  @args = args
end

Instance Method Details

#data_sql(data) ⇒ Object

Returns the SQL for this column.



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/knj/knjdb/drivers/mysql/knjdb_mysql_columns.rb', line 9

def data_sql(data)
  raise "No type given." if !data["type"]
  
  data["maxlength"] = 255 if data["type"] == "varchar" and !data.key?("maxlength")
  
  sql = "`#{data["name"]}` #{data["type"]}"
  sql << "(#{data["maxlength"]})" if data["maxlength"]
  sql << " PRIMARY KEY" if data["primarykey"]
  sql << " AUTO_INCREMENT" if data["autoincr"]
  sql << " NOT NULL" if !data["null"]
  
  if data.key?("default_func")
    sql << " DEFAULT #{data["default_func"]}"
  elsif data.key?("default") and data["default"] != false
    sql << " DEFAULT '#{@args[:db].escape(data["default"])}'"
  end
  
  sql << " COMMENT '#{@args[:db].escape(data["comment"])}'" if data.key?("comment")
  sql << " AFTER `#{@args[:db].esc_col(data["after"])}`" if data["after"] and !data["first"]
  sql << " FIRST" if data["first"]
  
  return sql
end