lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_tables.rb in knjrbfw-0.0.39 vs lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_tables.rb in knjrbfw-0.0.40

- old
+ new

@@ -11,20 +11,21 @@ def [](table_name) table_name = table_name.to_s begin - return @list[table_name] + ret = @list[table_name] + return ret rescue Wref::Recycled #ignore. end self.list do |table_obj| - return table_obj if table_obj.name.to_s == table_name + return table_obj if table_obj.name.to_s == table_name.to_s end - raise Knj::Errors::NotFound.new("Table was not found: #{table_name}.") + raise Knj::Errors::NotFound, "Table was not found: #{table_name}." end def list ret = {} unless block_given? @@ -53,11 +54,11 @@ else return ret end end - def create(name, data) + def create(name, data, args = nil) sql = "CREATE TABLE `#{name}` (" first = true data["columns"].each do |col_data| sql << ", " if !first @@ -65,16 +66,31 @@ sql << @db.cols.data_sql(col_data) end sql << ")" - @db.query(sql) + if args and args[:return_sql] + ret = [sql] + else + @db.query(sql) + end if data.key?("indexes") and data["indexes"] table_obj = self[name] - table_obj.create_indexes(data["indexes"]) + + if args and args[:return_sql] + ret += table_obj.create_indexes(data["indexes"], :return_sql => true) + else + table_obj.create_indexes(data["indexes"]) + end end + + if args and args[:return_sql] + return ret + else + return nil + end end end class KnjDB_sqlite3::Tables::Table def initialize(args) @@ -87,19 +103,32 @@ def name return @data[:name] end + def type + return @data[:type] + end + + def maxlength + return @data[:maxlength] + end + def drop sql = "DROP TABLE `#{self.name}`" @db.query(sql) end def optimize raise "stub!" end + def truncate + @db.query("DELETE FROM `#{self.name}` WHERE 1=1") + return nil + end + def table return @db.tables[@table_name] end def column(name) @@ -329,11 +358,15 @@ else return ret end end - def create_indexes(index_arr) + def create_indexes(index_arr, args = nil) + if args and args[:return_sql] + ret = [] + end + index_arr.each do |index_data| if index_data.is_a?(String) index_data = {"name" => index_data, "columns" => [index_data]} end @@ -353,10 +386,20 @@ sql << "#{@db.escape_col}#{@db.esc_col(col_name)}#{@db.escape_col}" end sql << ")" - @db.query(sql) + if args and args[:return_sql] + ret << sql + else + @db.query(sql) + end + end + + if args and args[:return_sql] + return ret + else + return nil end end def data ret = { \ No newline at end of file