Class: ActiveRecord::ConnectionAdapters::SQLiteAdapter

Inherits:
AbstractAdapter show all
Defined in:
lib/active_record/connection_adapters/sqlite_adapter.rb

Overview

The SQLite adapter works with both the 2.x and 3.x series of SQLite with the sqlite-ruby drivers (available both as gems and from rubyforge.org/projects/sqlite-ruby/).

Options:

  • :dbfile – Path to the database file.

Direct Known Subclasses

DeprecatedSQLiteAdapter

Instance Method Summary collapse

Methods inherited from AbstractAdapter

#clear_query_cache

Instance Method Details

#adapter_nameObject



168
169
170
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 168

def adapter_name()
  'SQLite'
end

#begin_db_transactionObject



145
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 145

def begin_db_transaction()    @connection.transaction end

#columns(table_name, name = nil) ⇒ Object



154
155
156
157
158
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 154

def columns(table_name, name = nil)
  table_structure(table_name).map { |field|
    SQLiteColumn.new(field['name'], field['dflt_value'], field['type'])
  }
end

#commit_db_transactionObject



146
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 146

def commit_db_transaction()   @connection.commit      end

#delete(sql, name = nil) ⇒ Object



116
117
118
119
120
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 116

def delete(sql, name = nil)
  sql += " WHERE 1=1" unless sql =~ /WHERE/i
  execute(sql, name)
  @connection.changes
end

#execute(sql, name = nil) ⇒ Object



106
107
108
109
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 106

def execute(sql, name = nil)
  #log(sql, name, @connection) { |connection| connection.execute(sql) }
  log(sql, name) { @connection.execute(sql) }
end

#insert(sql, name = nil, pk = nil, id_value = nil) ⇒ Object



122
123
124
125
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 122

def insert(sql, name = nil, pk = nil, id_value = nil)
  execute(sql, name = nil)
  id_value || @connection.last_insert_row_id
end

#native_database_typesObject



90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 90

def native_database_types
  {
    :primary_key => "INTEGER PRIMARY KEY NOT NULL",
    :string      => { :name => "varchar", :limit => 255 },
    :text        => { :name => "text" },
    :integer     => { :name => "integer" },
    :float       => { :name => "float" },
    :datetime    => { :name => "datetime" },
    :timestamp   => { :name => "datetime" },
    :time        => { :name => "datetime" },
    :date        => { :name => "date" },
    :binary      => { :name => "blob" },
    :boolean     => { :name => "integer" }
  }
end

#quote_column_name(name) ⇒ Object



164
165
166
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 164

def quote_column_name(name)
  "'#{name}'"
end

#quote_string(s) ⇒ Object



160
161
162
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 160

def quote_string(s)
  @connection.class.quote(s)
end

#rollback_db_transactionObject



147
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 147

def rollback_db_transaction() @connection.rollback    end

#select_all(sql, name = nil) ⇒ Object



127
128
129
130
131
132
133
134
135
136
137
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 127

def select_all(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

#select_one(sql, name = nil) ⇒ Object



139
140
141
142
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 139

def select_one(sql, name = nil)
  result = select_all(sql, name)
  result.nil? ? nil : result.first
end

#tablesObject



150
151
152
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 150

def tables
  execute('.table').map { |table| Table.new(table) }
end

#update(sql, name = nil) ⇒ Object



111
112
113
114
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 111

def update(sql, name = nil)
  execute(sql, name)
  @connection.changes
end