lib/knj/knjdb/drivers/mysql/knjdb_mysql_tables.rb in knjrbfw-0.0.39 vs lib/knj/knjdb/drivers/mysql/knjdb_mysql_tables.rb in knjrbfw-0.0.40
- old
+ new
@@ -1,17 +1,20 @@
+#This class handels various MySQL-table-specific behaviour.
class KnjDB_mysql::Tables
attr_reader :db, :list
+ #Constructor. This should not be called manually.
def initialize(args)
@args = args
@db = @args[:db]
@subtype = @db.opts[:subtype]
@list_mutex = Mutex.new
@list = Wref_map.new
@list_should_be_reloaded = true
end
+ #Cleans the wref-map.
def clean
@list.clean
end
#Returns a table by the given table-name.
@@ -29,10 +32,11 @@
end
raise Knj::Errors::NotFound.new("Table was not found: #{table_name}.")
end
+ #Yields the tables of the current database.
def list(args = {})
ret = {} unless block_given?
sql = "SHOW TABLE STATUS"
if args[:name]
@@ -64,11 +68,12 @@
else
return ret
end
end
- def create(name, data)
+ #Creates a new table by the given name and data.
+ def create(name, data, args = nil)
raise "No columns was given for '#{name}'." if !data["columns"] or data["columns"].empty?
sql = "CREATE TABLE `#{name}` ("
first = true
@@ -89,10 +94,12 @@
:table_name => name
})
end
sql << ")"
+
+ return [sql] if args and args[:return_sql]
@db.query(sql)
end
end
class KnjDB_mysql::Tables::Table
@@ -104,11 +111,11 @@
@data = args[:data]
@subtype = @db.opts[:subtype]
@list = Wref_map.new
@indexes_list = Wref_map.new
- raise "Could not figure out name from: '#{@data}'." if !@data[:Name]
+ raise "Could not figure out name from: '#{@data}'." if @data[:Name].to_s.strip.length <= 0
end
def reload
@data = @db.q("SHOW TABLE STATUS WHERE `Name` = '#{@db.esc(self.name)}'").fetch
end
@@ -319,10 +326,10 @@
return self
end
def data
ret = {
- "name" => name,
+ "name" => self.name,
"columns" => [],
"indexes" => []
}
columns.each do |name, column|
\ No newline at end of file