Class: ActiveRecord::ConnectionAdapters::PGliteAdapter::ExternalInterface
- Inherits:
-
Object
- Object
- ActiveRecord::ConnectionAdapters::PGliteAdapter::ExternalInterface
- Defined in:
- lib/active_record/connection_adapters/pglite_adapter.rb
Instance Method Summary collapse
- #close ⇒ Object
- #escape(str) ⇒ Object
- #exec(sql) ⇒ Object (also: #query, #async_exec, #async_query)
- #exec_params(sql, params) ⇒ Object
- #exec_prepared(name, params) ⇒ Object
- #finished? ⇒ Boolean
- #get_last_result ⇒ Object
-
#initialize(config) ⇒ ExternalInterface
constructor
A new instance of ExternalInterface.
- #prepare(name, sql, param_types = nil) ⇒ Object
- #raw_query(sql, params) ⇒ Object
- #reset ⇒ Object
- #set_client_encoding(encoding) ⇒ Object
- #transaction_status ⇒ Object
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
#close ⇒ Object
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
128 |
# File 'lib/active_record/connection_adapters/pglite_adapter.rb', line 128 def finished? = @finished |
#get_last_result ⇒ Object
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. end |
#reset ⇒ Object
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_status ⇒ Object
133 134 135 |
# File 'lib/active_record/connection_adapters/pglite_adapter.rb', line 133 def transaction_status PG::PQTRANS_IDLE end |