Class: SQLiteSweep::Query::Local

Inherits:
Base
  • Object
show all
Defined in:
lib/sqlitesweep/query/local.rb

Overview

Executes SQL queries against local SQLite databases using the sqlite3 gem.

Opens each database in readonly mode, executes the query, and returns results as an array of hashes. The database connection is always closed after the query, even if an error occurs.

Examples:

local = Query::Local.new(config)
result = local.execute(DatabaseURI.new("/tmp/test.sqlite3"))
result.rows  # => [{"count(*)" => 42}]

Instance Method Summary collapse

Methods inherited from Base

#initialize

Constructor Details

This class inherits a constructor from SQLiteSweep::Query::Base

Instance Method Details

#execute(uri) ⇒ Result

Returns The query result.

Parameters:

Returns:

  • (Result)

    The query result.

Raises:

  • (QueryError)

    If the database can’t be opened or the query fails.



20
21
22
23
24
25
26
27
28
29
# File 'lib/sqlitesweep/query/local.rb', line 20

def execute(uri)
  db = SQLite3::Database.new(uri.path, readonly: true)
  db.results_as_hash = true
  rows = db.execute(@config.query)
  Result.new(rows: rows, source: uri)
rescue SQLite3::Exception => e
  raise QueryError, "Local query failed on #{uri}: #{e.message}"
ensure
  db&.close
end