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.



115
116
117
118
119
120
121
122
123
124
125
126
# File 'lib/active_record/connection_adapters/pglite_adapter.rb', line 115

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 = {}
  @finished = false
end

Instance Method Details

#closeObject



185
186
187
# File 'lib/active_record/connection_adapters/pglite_adapter.rb', line 185

def close
  @finished = true
end

#escape(str) ⇒ Object



137
138
139
# File 'lib/active_record/connection_adapters/pglite_adapter.rb', line 137

def escape(str)
  str
end

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



153
154
155
# File 'lib/active_record/connection_adapters/pglite_adapter.rb', line 153

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

#exec_params(sql, params) ⇒ Object



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

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

#exec_prepared(name, params) ⇒ Object



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

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

#finished?Boolean

Returns:

  • (Boolean)


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

def finished? = @finished

#get_last_resultObject



177
178
179
# File 'lib/active_record/connection_adapters/pglite_adapter.rb', line 177

def get_last_result
  @last_result
end

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



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

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

#raw_query(sql, params) ⇒ Object



141
142
143
144
145
146
147
148
149
150
151
# File 'lib/active_record/connection_adapters/pglite_adapter.rb', line 141

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



181
182
183
# File 'lib/active_record/connection_adapters/pglite_adapter.rb', line 181

def reset
  @prepared_statements_map = {}
end

#set_client_encoding(encoding) ⇒ Object



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

def set_client_encoding(encoding)
end

#transaction_statusObject



133
134
135
# File 'lib/active_record/connection_adapters/pglite_adapter.rb', line 133

def transaction_status
  PG::PQTRANS_IDLE
end