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
- #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.
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
121 |
# File 'lib/active_record/connection_adapters/pglite_adapter.rb', line 121 def finished? = true |
#get_last_result ⇒ Object
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. end |
#reset ⇒ Object
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_status ⇒ Object
126 127 128 |
# File 'lib/active_record/connection_adapters/pglite_adapter.rb', line 126 def transaction_status PG::PQTRANS_IDLE end |