Class: Dbviewer::Query::Executor

Inherits:
Object
  • Object
show all
Defined in:
lib/dbviewer/query/executor.rb

Overview

Executor handles executing SQL queries and formatting results

Instance Method Summary collapse

Constructor Details

#initialize(connection, config = nil) ⇒ Executor

Initialize with a connection and configuration

Parameters:

  • connection (ActiveRecord::ConnectionAdapters::AbstractAdapter)

    Database connection

  • config (Dbviewer::Configuration) (defaults to: nil)

    Configuration object



8
9
10
11
# File 'lib/dbviewer/query/executor.rb', line 8

def initialize(connection, config = nil)
  @connection = connection
  @config = config || Dbviewer.configuration
end

Instance Method Details

#execute_query(sql) ⇒ ActiveRecord::Result

Execute a raw SQL query after validating for safety

Parameters:

  • sql (String)

    SQL query to execute

Returns:

  • (ActiveRecord::Result)

    Result set with columns and rows

Raises:

  • (StandardError)

    If the query is invalid or unsafe



17
18
19
20
# File 'lib/dbviewer/query/executor.rb', line 17

def execute_query(sql)
  log_query_execution(sql, "query")
  exec_query(normalize_sql(sql))
end

#execute_sqlite_pragma(pragma) ⇒ ActiveRecord::Result

Execute a SQLite PRAGMA command without adding a LIMIT clause

Parameters:

  • pragma (String)

    PRAGMA command to execute (without the “PRAGMA” keyword)

Returns:

  • (ActiveRecord::Result)

    Result set with the PRAGMA value

Raises:

  • (StandardError)

    If the query is invalid or cannot be executed



26
27
28
29
30
# File 'lib/dbviewer/query/executor.rb', line 26

def execute_sqlite_pragma(pragma)
  pragma_sql = "PRAGMA #{pragma}"
  log_query_execution(pragma_sql, "pragma")
  exec_query(pragma_sql)
end