Class: ActiveRecord::ConnectionAdapters::SQLite3WasmAdapter::ExternalInterface

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

Instance Method Summary collapse

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_timeoutObject



53
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 53

def busy_timeout(...) = nil

#changesObject



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

Returns:

  • (Boolean)


62
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 62

def closed? = false

#commitObject



84
85
86
87
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 84

def commit
  execute "commit transaction"
  true
end

#execObject



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_batch2Object

Raises:

  • (NotImplementedError)


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)

#rollbackObject



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