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