class MiniSql::Sqlite::Connection
Attributes
deserializer_cache[R]
param_encoder[R]
raw_connection[R]
Public Class Methods
new(raw_connection, args = nil)
click to toggle source
# File lib/mini_sql/sqlite/connection.rb, line 8 def initialize(raw_connection, args = nil) @raw_connection = raw_connection @param_encoder = (args && args[:param_encoder]) || InlineParamEncoder.new(self) @deserializer_cache = (args && args[:deserializer_cache]) || DeserializerCache.new end
Public Instance Methods
escape_string(str)
click to toggle source
# File lib/mini_sql/sqlite/connection.rb, line 67 def escape_string(str) str.gsub("'", "''") end
exec(sql, *params)
click to toggle source
# File lib/mini_sql/sqlite/connection.rb, line 41 def exec(sql, *params) start = raw_connection.total_changes r = run(sql, *params) # this is not safe for multithreading, also for DELETE from TABLE will return # incorrect data if r.length > 0 r.length else raw_connection.total_changes - start end end
prepared(condition = true)
click to toggle source
# File lib/mini_sql/sqlite/connection.rb, line 14 def prepared(condition = true) if condition @prepared ||= PreparedConnection.new(self) else self end end
query(sql, *params)
click to toggle source
# File lib/mini_sql/sqlite/connection.rb, line 55 def query(sql, *params) run(sql, *params) do |set| deserializer_cache.materialize(set) end end
query_array(sql, *params)
click to toggle source
# File lib/mini_sql/sqlite/connection.rb, line 37 def query_array(sql, *params) run(sql, *params) end
query_decorator(decorator, sql, *params)
click to toggle source
# File lib/mini_sql/sqlite/connection.rb, line 61 def query_decorator(decorator, sql, *params) run(sql, *params) do |set| deserializer_cache.materialize(set, decorator) end end
query_hash(sql, *params)
click to toggle source
# File lib/mini_sql/sqlite/connection.rb, line 27 def query_hash(sql, *params) r = [] run(sql, *params) do |set| set.each_hash do |h| r << h end end r end
query_single(sql, *params)
click to toggle source
# File lib/mini_sql/sqlite/connection.rb, line 22 def query_single(sql, *params) # a bit lazy can be optimized run(sql, *params).flatten! end
Private Instance Methods
run(sql, *params) { |execute| ... }
click to toggle source
# File lib/mini_sql/sqlite/connection.rb, line 73 def run(sql, *params) if params && params.length > 0 sql = param_encoder.encode(sql, *params) end if block_given? stmt = SQLite3::Statement.new(raw_connection, sql) result = yield stmt.execute stmt.close result else raw_connection.execute(sql) end end