Namespace

Class/Module Index [+]

Quicksearch

JdbcSpec::SQLite3

Public Class Methods

adapter_matcher(name, *) click to toggle source
# File lib/jdbc_adapter/jdbc_sqlite3.rb, line 31
def self.adapter_matcher(name, *)
  name =~ /sqlite/ ? self : false
end
column_selector() click to toggle source
# File lib/jdbc_adapter/jdbc_sqlite3.rb, line 35
def self.column_selector
  [/sqlite/, lambda {|cfg,col| col.extend(::JdbcSpec::SQLite3::Column)}]
end
jdbc_connection_class() click to toggle source
# File lib/jdbc_adapter/jdbc_sqlite3.rb, line 39
def self.jdbc_connection_class
  ::ActiveRecord::ConnectionAdapters::Sqlite3JdbcConnection
end

Public Instance Methods

_execute(sql, name = nil) click to toggle source
# 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
add_column(table_name, column_name, type, options = {}) click to toggle source
# 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
indexes(table_name, name = nil) click to toggle source
# 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
last_insert_id(table, sequence_name) click to toggle source
# 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
modify_types(tp) click to toggle source
# 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
quote_string(str) click to toggle source
# File lib/jdbc_adapter/jdbc_sqlite3.rb, line 195
def quote_string(str)
  str.gsub(/'/, "''")
end
quoted_false() click to toggle source
# File lib/jdbc_adapter/jdbc_sqlite3.rb, line 203
def quoted_false
  %{'f'}
end
quoted_true() click to toggle source
# File lib/jdbc_adapter/jdbc_sqlite3.rb, line 199
def quoted_true
  %{'t'}
end
recreate_database(name) click to toggle source
# File lib/jdbc_adapter/jdbc_sqlite3.rb, line 310
def recreate_database(name)
  tables.each{ |table| drop_table(table) }
end
remove_index(table_name, options = {}) click to toggle source
# 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
rename_table(name, new_name) click to toggle source
# File lib/jdbc_adapter/jdbc_sqlite3.rb, line 253
def rename_table(name, new_name)
  execute "ALTER TABLE #{name} RENAME TO #{new_name}"
end
select(sql, name=nil) click to toggle source
# 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
sqlite_version() click to toggle source
# File lib/jdbc_adapter/jdbc_sqlite3.rb, line 150
def sqlite_version
  @sqlite_version ||= select_value('select sqlite_version(*)')
end
table_structure(table_name) click to toggle source
# 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

[Validate]

Generated with the Darkfish Rdoc Generator 2.