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