Class: Nquery::DataSources::RailsAdapter

Inherits:
Adapter
  • Object
show all
Defined in:
lib/nquery/data_sources/rails_adapter.rb

Instance Method Summary collapse

Methods inherited from Adapter

for, #initialize

Constructor Details

This class inherits a constructor from Nquery::DataSources::Adapter

Instance Method Details

#columns(table_name) ⇒ Object



12
13
14
# File 'lib/nquery/data_sources/rails_adapter.rb', line 12

def columns(table_name)
  connection.columns(table_name).map { |c| { name: c.name, type: c.type.to_s } }
end

#execute_readonly(statement, timeout: 15, row_limit: 10_000) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/nquery/data_sources/rails_adapter.rb', line 16

def execute_readonly(statement, timeout: 15, row_limit: 10_000)
  rows = []
  columns = []
  duration = Benchmark.realtime do
    connection.transaction do
      connection.execute("SET TRANSACTION READ ONLY") if postgresql?
      result = connection.exec_query(sanitize_limit(statement, row_limit))
      columns = result.columns
      rows = result.rows
      raise ActiveRecord::Rollback
    end
  end
  { columns: columns, rows: rows, row_count: rows.size, duration_ms: (duration * 1000).round }
end

#tablesObject



8
9
10
# File 'lib/nquery/data_sources/rails_adapter.rb', line 8

def tables
  connection.tables.reject { |t| hidden_table?(t) }
end