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.
106 107 108 109 110 111 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 106 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.
104 105 106 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 104 def interface @interface end |
#sql ⇒ Object (readonly)
Returns the value of attribute sql.
104 105 106 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 104 def sql @sql end |
Instance Method Details
#close ⇒ Object
113 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 113 def close = nil |
#column_count ⇒ Object
130 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 130 def column_count = columns.size |
#columns ⇒ Object
115 116 117 118 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 115 def columns execute @columns end |
#execute ⇒ Object
132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 132 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
157 158 159 160 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 157 def reset! @rows = nil @columns = nil end |
#result ⇒ Object
120 121 122 123 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 120 def result execute @rows.map { @columns.zip(_1).to_h }.freeze end |
#to_a ⇒ Object
125 126 127 128 |
# File 'lib/active_record/connection_adapters/sqlite3_wasm_adapter.rb', line 125 def to_a execute @rows end |