Class: ActiveRecord::ConnectionAdapters::SQLite3WasmAdapter::Statement
- Inherits:
-
Object
- Object
- ActiveRecord::ConnectionAdapters::SQLite3WasmAdapter::Statement
- Defined in:
- lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb
Instance Attribute Summary collapse
-
#interface ⇒ Object
readonly
Returns the value of attribute interface.
-
#sql ⇒ Object
readonly
Returns the value of attribute sql.
Instance Method Summary collapse
- #close ⇒ Object
- #column_count ⇒ Object
- #columns ⇒ Object
- #execute ⇒ Object
-
#initialize(interface, sql) ⇒ Statement
constructor
A new instance of Statement.
- #reset! ⇒ Object
- #result ⇒ Object
- #to_a ⇒ Object
Constructor Details
#initialize(interface, sql) ⇒ Statement
Returns a new instance of Statement.
102 103 104 105 106 107 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 102 def initialize(interface, sql) @interface = interface @sql = sql @columns = nil @rows = nil end |
Instance Attribute Details
#interface ⇒ Object (readonly)
Returns the value of attribute interface.
100 101 102 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 100 def interface @interface end |
#sql ⇒ Object (readonly)
Returns the value of attribute sql.
100 101 102 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 100 def sql @sql end |
Instance Method Details
#close ⇒ Object
109 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 109 def close = nil |
#column_count ⇒ Object
126 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 126 def column_count = columns.size |
#columns ⇒ Object
111 112 113 114 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 111 def columns execute @columns end |
#execute ⇒ Object
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 128 def execute return if @rows res = interface.exec(sql) # unwrap column names cols = res[:cols].to_a.map(&:to_s) # unwrap row values rows = res[:rows].to_a.map do |row| row.to_a.map do |val| str_val = val.to_s next str_val if val.typeof == "string" next str_val == "true" if val.typeof == "boolean" next nil if str_val == "null" # handle integers and floats next str_val.include?(".") ? val.to_f : val.to_i if val.typeof == "number" str_val end end @columns = cols @rows = rows end |
#reset! ⇒ Object
153 154 155 156 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 153 def reset! @rows = nil @columns = nil end |
#result ⇒ Object
116 117 118 119 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 116 def result execute @rows.map { @columns.zip(_1).to_h }.freeze end |
#to_a ⇒ Object
121 122 123 124 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 121 def to_a execute @rows end |