Class: KnjDB_sqlite3::Columns::Column
- Defined in:
- lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_columns.rb
Instance Attribute Summary collapse
-
#args ⇒ Object
readonly
Returns the value of attribute args.
Instance Method Summary collapse
- #autoincr? ⇒ Boolean
- #change(data) ⇒ Object
- #data ⇒ Object
- #default ⇒ Object
- #drop ⇒ Object
-
#initialize(args) ⇒ Column
constructor
A new instance of Column.
- #maxlength ⇒ Object
- #name ⇒ Object
- #null? ⇒ Boolean
- #primarykey? ⇒ Boolean
- #table ⇒ Object
- #type ⇒ Object
Constructor Details
#initialize(args) ⇒ Column
Returns a new instance of Column.
41 42 43 44 |
# File 'lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_columns.rb', line 41 def initialize(args) @args = args @db = @args[:db] end |
Instance Attribute Details
#args ⇒ Object (readonly)
Returns the value of attribute args.
39 40 41 |
# File 'lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_columns.rb', line 39 def args @args end |
Instance Method Details
#autoincr? ⇒ Boolean
123 124 125 126 127 |
# File 'lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_columns.rb', line 123 def autoincr? return true if @args[:data][:name] == "id" return true if @args[:data][:pk].to_i >= 1 return false end |
#change(data) ⇒ Object
135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
# File 'lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_columns.rb', line 135 def change(data) newdata = data.clone newdata["name"] = self.name if !newdata.key?("name") newdata["type"] = self.type if !newdata.key?("type") newdata["maxlength"] = self.maxlength if !newdata.key?("maxlength") and self.maxlength newdata["null"] = self.null? if !newdata.key?("null") newdata["default"] = self.default if !newdata.key?("default") newdata.delete("primarykey") if newdata.key?("primarykey") @type = nil @maxlength = nil new_table = self.table.copy( "alter_columns" => { self.name.to_s => newdata } ) end |
#data ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_columns.rb', line 54 def data return { "type" => self.type, "name" => self.name, "null" => self.null?, "maxlength" => self.maxlength, "default" => self.default, "primarykey" => self.primarykey?, "autoincr" => self.autoincr? } end |
#default ⇒ Object
103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_columns.rb', line 103 def default def_val = @args[:data][:dflt_value] if def_val.to_s.slice(0..0) == "'" def_val = def_val.to_s.slice(0) end if def_val.to_s.slice(-1..-1) == "'" def_val = def_val.to_s.slice(0, def_val.length - 1) end return false if @args[:data][:dflt_value].to_s.length == 0 return def_val end |
#drop ⇒ Object
129 130 131 132 133 |
# File 'lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_columns.rb', line 129 def drop @args[:table].copy( "drops" => self.name ) end |
#maxlength ⇒ Object
97 98 99 100 101 |
# File 'lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_columns.rb', line 97 def maxlength self.type return @maxlength if @maxlength return false end |
#name ⇒ Object
46 47 48 |
# File 'lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_columns.rb', line 46 def name return @args[:data][:name] end |
#null? ⇒ Boolean
92 93 94 95 |
# File 'lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_columns.rb', line 92 def null? return false if @args[:data][:notnull].to_i == 1 return true end |
#primarykey? ⇒ Boolean
117 118 119 120 121 |
# File 'lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_columns.rb', line 117 def primarykey? return true if @args[:data][:name] == "id" return false if @args[:data][:pk].to_i == 0 return true end |
#table ⇒ Object
50 51 52 |
# File 'lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_columns.rb', line 50 def table return @args[:table] end |
#type ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_columns.rb', line 66 def type if !@type if match = @args[:data][:type].match(/^([A-z]+)$/) @maxlength = false type = match[0] elsif match = @args[:data][:type].match(/^decimal\((\d+),(\d+)\)$/) @maxlength = "#{match[1]},#{match[2]}" type = "decimal" elsif match = @args[:data][:type].match(/^enum\((.+)\)$/) @maxlength = match[1] type = "enum" elsif match = @args[:data][:type].match(/^(.+)\((\d+)\)$/) @maxlength = match[2] type = match[1] end if type == "integer" @type = "int" else @type = type end end return @type end |