Class: KnjDB_mysql::Tables::Table
- Defined in:
- lib/knj/knjdb/drivers/mysql/knjdb_mysql_tables.rb
Instance Attribute Summary collapse
-
#list ⇒ Object
Returns the value of attribute list.
Instance Method Summary collapse
- #column(name) ⇒ Object
- #columns ⇒ Object
- #create_columns(col_arr) ⇒ Object
- #create_indexes(index_arr) ⇒ Object
- #data ⇒ Object
- #drop ⇒ Object
- #index(name) ⇒ Object
- #indexes ⇒ Object
-
#initialize(args) ⇒ Table
constructor
A new instance of Table.
- #insert(data) ⇒ Object
- #name ⇒ Object
- #optimize ⇒ Object
- #rename(newname) ⇒ Object
- #truncate ⇒ Object
Constructor Details
#initialize(args) ⇒ Table
Returns a new instance of Table.
98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/knj/knjdb/drivers/mysql/knjdb_mysql_tables.rb', line 98 def initialize(args) @args = args @db = args[:db] @driver = args[:driver] @data = args[:data] @subtype = @db.opts[:subtype] @list = Knj::Wref_map.new @indexes_list = Knj::Wref_map.new raise "Could not figure out name from: '#{@data}'." if !@data[:Name] end |
Instance Attribute Details
#list ⇒ Object
Returns the value of attribute list.
96 97 98 |
# File 'lib/knj/knjdb/drivers/mysql/knjdb_mysql_tables.rb', line 96 def list @list end |
Instance Method Details
#column(name) ⇒ Object
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
# File 'lib/knj/knjdb/drivers/mysql/knjdb_mysql_tables.rb', line 124 def column(name) name = name.to_s begin return @list[name] rescue WeakRef::RefError #ignore. end self.columns do |col| return col if col.name == name end raise Knj::Errors::NotFound.new("Column not found: '#{name}'.") end |
#columns ⇒ Object
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
# File 'lib/knj/knjdb/drivers/mysql/knjdb_mysql_tables.rb', line 140 def columns @db.cols ret = {} sql = "SHOW FULL COLUMNS FROM `#{self.name}`" @db.q(sql) do |d_cols| obj = @list.get!(d_cols[:Field]) if !obj obj = KnjDB_mysql::Columns::Column.new( :table_name => self.name, :db => @db, :driver => @driver, :data => d_cols ) @list[d_cols[:Field]] = obj end if block_given? yield(obj) else ret[d_cols[:Field]] = obj end end return ret end |
#create_columns(col_arr) ⇒ Object
214 215 216 217 218 219 |
# File 'lib/knj/knjdb/drivers/mysql/knjdb_mysql_tables.rb', line 214 def create_columns(col_arr) col_arr.each do |col_data| sql = "ALTER TABLE `#{self.name}` ADD COLUMN #{@db.cols.data_sql(col_data)};" @db.query(sql) end end |
#create_indexes(index_arr) ⇒ Object
221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 |
# File 'lib/knj/knjdb/drivers/mysql/knjdb_mysql_tables.rb', line 221 def create_indexes(index_arr) index_arr.each do |index_data| if index_data.is_a?(String) index_data = {"name" => index_data, "columns" => [index_data]} end raise "No name was given." if !index_data.key?("name") or index_data["name"].strip.length <= 0 raise "No columns was given on index: '#{index_data["name"]}'." if !index_data["columns"] or index_data["columns"].empty? sql = "CREATE" sql << " UNIQUE" if index_data["unique"] sql << " INDEX #{@db.escape_col}#{@db.esc_col(index_data["name"])}#{@db.escape_col} ON #{@db.escape_table}#{@db.esc_table(self.name)}#{@db.escape_table} (" first = true index_data["columns"].each do |col_name| sql << ", " if !first first = false if first sql << "#{@db.escape_col}#{@db.esc_col(col_name)}#{@db.escape_col}" end sql << ")" @db.query(sql) end end |
#data ⇒ Object
261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 |
# File 'lib/knj/knjdb/drivers/mysql/knjdb_mysql_tables.rb', line 261 def data ret = { "name" => name, "columns" => [], "indexes" => [] } columns.each do |name, column| ret["columns"] << column.data end indexes.each do |name, index| ret["indexes"] << index.data if name != "PRIMARY" end return ret end |
#drop ⇒ Object
114 115 116 117 |
# File 'lib/knj/knjdb/drivers/mysql/knjdb_mysql_tables.rb', line 114 def drop sql = "DROP TABLE `#{self.name}`" @db.query(sql) end |
#index(name) ⇒ Object
198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 |
# File 'lib/knj/knjdb/drivers/mysql/knjdb_mysql_tables.rb', line 198 def index(name) name = name.to_s begin return @indexes_list[name] rescue WeakRef::RefError #ignore. end self.indexes do |index| return index if index.name == name end raise Knj::Errors::NotFound.new("Index not found: #{name}.") end |
#indexes ⇒ Object
168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 |
# File 'lib/knj/knjdb/drivers/mysql/knjdb_mysql_tables.rb', line 168 def indexes @db.indexes ret = {} @db.q("SHOW INDEX FROM `#{self.name}`") do |d_indexes| next if d_indexes[:Key_name] == "PRIMARY" obj = @indexes_list.get!(d_indexes[:Key_name]) if !obj obj = KnjDB_mysql::Indexes::Index.new( :table_name => self.name, :db => @db, :driver => @driver, :data => d_indexes ) obj.columns << d_indexes[:Column_name] @indexes_list[d_indexes[:Key_name]] = obj end if block_given? yield(obj) else ret[d_indexes[:Key_name]] = obj end end return ret end |
#insert(data) ⇒ Object
279 280 281 |
# File 'lib/knj/knjdb/drivers/mysql/knjdb_mysql_tables.rb', line 279 def insert(data) @db.insert(self.name, data) end |
#name ⇒ Object
110 111 112 |
# File 'lib/knj/knjdb/drivers/mysql/knjdb_mysql_tables.rb', line 110 def name return @data[:Name] end |
#optimize ⇒ Object
119 120 121 122 |
# File 'lib/knj/knjdb/drivers/mysql/knjdb_mysql_tables.rb', line 119 def optimize @db.query("OPTIMIZE TABLE `#{self.name}`") return self end |
#rename(newname) ⇒ Object
248 249 250 251 252 253 254 |
# File 'lib/knj/knjdb/drivers/mysql/knjdb_mysql_tables.rb', line 248 def rename(newname) oldname = self.name @db.query("ALTER TABLE `#{oldname}` RENAME TO `#{newname}`") @args[:tables].list[newname] = self @args[:tables].list.delete(oldname) @data[:Name] = newname end |
#truncate ⇒ Object
256 257 258 259 |
# File 'lib/knj/knjdb/drivers/mysql/knjdb_mysql_tables.rb', line 256 def truncate @db.query("TRUNCATE `#{self.name}`") return self end |