Class: ActiveRecord::ConnectionAdapters::PGliteAdapter::ExternalInterface

Inherits:
Object
  • Object
show all
Defined in:
lib/active_record/connection_adapters/pglite_adapter.rb

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ ExternalInterface

Returns a new instance of ExternalInterface.



109
110
111
112
113
114
115
116
117
118
119
# File 'lib/active_record/connection_adapters/pglite_adapter.rb', line 109

def initialize(config)
  @js_interface =
    if config[:js_interface]
      config[:js_interface]
    else
      # Set up the database in JS and get the idenfier back
      JS.global[:pglite].create_interface(config[:database]).await.to_s
    end.to_sym
  @last_result = nil
  @prepared_statements_map = {}
end

Instance Method Details

#escape(str) ⇒ Object



130
131
132
# File 'lib/active_record/connection_adapters/pglite_adapter.rb', line 130

def escape(str)
  str
end

#exec(sql) ⇒ Object Also known as: query, async_exec, async_query



146
147
148
# File 'lib/active_record/connection_adapters/pglite_adapter.rb', line 146

def exec(sql)
  raw_query(sql, [])
end

#exec_params(sql, params) ⇒ Object



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

def exec_params(sql, params)
  if params.empty?
    return exec(sql)
  end
  raw_query(sql, params)
end

#exec_prepared(name, params) ⇒ Object



161
162
163
164
# File 'lib/active_record/connection_adapters/pglite_adapter.rb', line 161

def exec_prepared(name, params)
  sql = @prepared_statements_map[name]
  exec_params(sql, params)
end

#finished?Boolean

Returns:

  • (Boolean)


121
# File 'lib/active_record/connection_adapters/pglite_adapter.rb', line 121

def finished? = true

#get_last_resultObject



170
171
172
# File 'lib/active_record/connection_adapters/pglite_adapter.rb', line 170

def get_last_result
  @last_result
end

#prepare(name, sql, param_types = nil) ⇒ Object



166
167
168
# File 'lib/active_record/connection_adapters/pglite_adapter.rb', line 166

def prepare(name, sql, param_types = nil)
  @prepared_statements_map[name] = sql
end

#raw_query(sql, params) ⇒ Object



134
135
136
137
138
139
140
141
142
143
144
# File 'lib/active_record/connection_adapters/pglite_adapter.rb', line 134

def raw_query(sql, params)
  PGlite.log "[pglite] query: #{sql} with params: #{params}"
  params = params.map { |param| param.to_js }
  raw_res = JS.global[js_interface].query(sql, params.to_js).await
  result = PGlite::Result.new(raw_res)
  PGlite.log "[pglite] result: #{result.values}"
  @last_result = result
  result
rescue => e
  raise PG::Error, e.message
end

#resetObject



174
175
176
# File 'lib/active_record/connection_adapters/pglite_adapter.rb', line 174

def reset
  @prepared_statements_map = {}
end

#set_client_encoding(encoding) ⇒ Object



123
124
# File 'lib/active_record/connection_adapters/pglite_adapter.rb', line 123

def set_client_encoding(encoding)
end

#transaction_statusObject



126
127
128
# File 'lib/active_record/connection_adapters/pglite_adapter.rb', line 126

def transaction_status
  PG::PQTRANS_IDLE
end