Class: ActiveRecord::ConnectionAdapters::SQLite3WasmAdapter::ExternalInterface
- Inherits:
-
Object
- Object
- ActiveRecord::ConnectionAdapters::SQLite3WasmAdapter::ExternalInterface
- Defined in:
- lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb
Instance Method Summary collapse
- #busy_timeout ⇒ Object
- #changes ⇒ Object
- #closed? ⇒ Boolean
- #commit ⇒ Object
- #exec ⇒ Object
- #execute(sql) ⇒ Object
- #execute_batch2 ⇒ Object
-
#initialize(config) ⇒ ExternalInterface
constructor
A new instance of ExternalInterface.
- #prepare(sql) ⇒ Object
- #rollback ⇒ Object
- #transaction(mode = nil) ⇒ Object
Constructor Details
#initialize(config) ⇒ ExternalInterface
Returns a new instance of ExternalInterface.
39 40 41 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 39 def initialize(config) @js_interface = config.fetch(:js_interface, "sqlite4rails").to_sym end |
Instance Method Details
#busy_timeout ⇒ Object
53 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 53 def busy_timeout(...) = nil |
#changes ⇒ Object
94 95 96 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 94 def changes JS.global[js_interface].changes.to_i end |
#closed? ⇒ Boolean
62 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 62 def closed? = false |
#commit ⇒ Object
84 85 86 87 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 84 def commit execute "commit transaction" true end |
#exec ⇒ Object
43 44 45 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 43 def exec(...) JS.global[js_interface].exec(...) end |
#execute(sql) ⇒ Object
55 56 57 58 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 55 def execute(sql) @last_statement = Statement.new(self, sql) @last_statement.result end |
#execute_batch2 ⇒ Object
47 48 49 50 51 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 47 def execute_batch2(...) # TODO: it's used by fixtures and truncate_all, so # we don't need it right now raise NotImplementedError, "sqlite3_wasm#execute_batch2 is not implemented yet" end |
#prepare(sql) ⇒ Object
60 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 60 def prepare(sql) = Statement.new(self, sql) |
#rollback ⇒ Object
89 90 91 92 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 89 def rollback execute "rollback transaction" true end |
#transaction(mode = nil) ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 64 def transaction(mode = nil) # deferred doesn't work 🤷♂️ mode = nil if mode.nil? execute "begin #{mode} transaction" if block_given? abort = false begin yield self rescue abort = true raise ensure abort and rollback or commit end else true end end |