# File lib/jdbc_adapter/jdbc_sqlite3.rb, line 31 def self.adapter_matcher(name, *) name =~ /sqlite/ ? self : false end
# File lib/jdbc_adapter/jdbc_sqlite3.rb, line 314 def _execute(sql, name = nil) if ActiveRecord::ConnectionAdapters::JdbcConnection::select?(sql) @connection.execute_query(sql) else affected_rows = @connection.execute_update(sql) ActiveRecord::ConnectionAdapters::JdbcConnection::insert?(sql) ? last_insert_id(sql.split(" ", 4)[2], nil) : affected_rows end end
# File lib/jdbc_adapter/jdbc_sqlite3.rb, line 207 def add_column(table_name, column_name, type, options = {}) if option_not_null = options[:null] == false option_not_null = options.delete(:null) end add_column_sql = "ALTER TABLE #{quote_table_name(table_name)} ADD #{quote_column_name(column_name)} #{type_to_sql(type, options[:limit], options[:precision], options[:scale])}" add_column_options!(add_column_sql, options) execute(add_column_sql) if option_not_null alter_column_sql = "ALTER TABLE #{quote_table_name(table_name)} ALTER #{quote_column_name(column_name)} NOT NULL" end end
# File lib/jdbc_adapter/jdbc_sqlite3.rb, line 293 def indexes(table_name, name = nil) result = select_rows("SELECT name, sql FROM sqlite_master WHERE tbl_name = '#{table_name}' AND type = 'index'", name) result.collect do |row| name = row[0] index_sql = row[1] unique = (index_sql =~ /unique/) cols = index_sql.match(/\((.*)\)/)[1].gsub(/,/,' ').split ::ActiveRecord::ConnectionAdapters::IndexDefinition.new(table_name, name, unique, cols) end end
# File lib/jdbc_adapter/jdbc_sqlite3.rb, line 266 def last_insert_id(table, sequence_name) Integer(select_value("SELECT SEQ FROM SQLITE_SEQUENCE WHERE NAME = '#{table}'")) end
# File lib/jdbc_adapter/jdbc_sqlite3.rb, line 154 def modify_types(tp) tp[:primary_key] = "INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL" tp[:string] = { :name => "VARCHAR", :limit => 255 } tp[:float] = { :name => "REAL" } tp[:decimal] = { :name => "REAL" } tp[:datetime] = { :name => "DATETIME" } tp[:timestamp] = { :name => "DATETIME" } tp[:time] = { :name => "TIME" } tp[:date] = { :name => "DATE" } tp[:boolean] = { :name => "BOOLEAN" } tp end
# File lib/jdbc_adapter/jdbc_sqlite3.rb, line 195 def quote_string(str) str.gsub(/'/, "''") end
# File lib/jdbc_adapter/jdbc_sqlite3.rb, line 203 def quoted_false %{'f'} end
# File lib/jdbc_adapter/jdbc_sqlite3.rb, line 199 def quoted_true %{'t'} end
# File lib/jdbc_adapter/jdbc_sqlite3.rb, line 310 def recreate_database(name) tables.each{ |table| drop_table(table) } end
# File lib/jdbc_adapter/jdbc_sqlite3.rb, line 289 def remove_index(table_name, options = {}) execute "DROP INDEX #{quote_column_name(index_name(table_name, options))}" end
# File lib/jdbc_adapter/jdbc_sqlite3.rb, line 253 def rename_table(name, new_name) execute "ALTER TABLE #{name} RENAME TO #{new_name}" end
# File lib/jdbc_adapter/jdbc_sqlite3.rb, line 323 def select(sql, name=nil) execute(sql, name).map do |row| record = {} row.each_key do |key| if key.is_a?(String) record[key.sub(/^"?\w+"?\./, '')] = row[key] end end record end end
# File lib/jdbc_adapter/jdbc_sqlite3.rb, line 150 def sqlite_version @sqlite_version ||= select_value('select sqlite_version(*)') end
# File lib/jdbc_adapter/jdbc_sqlite3.rb, line 335 def table_structure(table_name) returning structure = @connection.execute_query("PRAGMA table_info(#{quote_table_name(table_name)})") do raise(ActiveRecord::StatementInvalid, "Could not find table '#{table_name}'") if structure.empty? end end
Generated with the Darkfish Rdoc Generator 2.