class MicroSql::SqliteAdapter

Public Class Methods

new(url) click to toggle source
# File lib/micro_sql/sqlite_adapter.rb, line 2
def initialize(url)
  require "sqlite3"

  uri = URI.parse(url)
  @impl = SQLite3::Database.new(uri.path)
  exec! "PRAGMA synchronous = OFF"
end

Public Instance Methods

execute_batch(sql) click to toggle source
# File lib/micro_sql/sqlite_adapter.rb, line 10
def execute_batch(sql)
  @impl.execute_batch(sql)
end
tables() click to toggle source
# File lib/micro_sql/sqlite_adapter.rb, line 14
def tables
  exec("SELECT name FROM sqlite_master WHERE type=?", "table").map(&:first)
end

Private Instance Methods

execute(prepare, sql, *args) click to toggle source
# File lib/micro_sql/sqlite_adapter.rb, line 20
def execute(prepare, sql, *args)
  prepared_query = prepare(sql)
  execute_prepared_query sql, prepared_query, *args
ensure
  unprepare(sql) if prepare == :no_prepare
end
execute_prepared_query(sql, query, *args) click to toggle source
# File lib/micro_sql/sqlite_adapter.rb, line 27
def execute_prepared_query(sql, query, *args)
  results = query.execute!(*args)
  case sql
  when /^\s*INSERT/i then @impl.last_insert_row_id
  when /^\s*UPDATE/i then @impl.changes
  when /^\s*DELETE/i then @impl.changes
  else                    results
  end
rescue SQLite3::ConstraintException
  raise Error, $!.message
end
prepare_query(key, sql) click to toggle source
# File lib/micro_sql/sqlite_adapter.rb, line 39
def prepare_query(key, sql)
  @impl.prepare(sql)
end