class MiniSql::Mysql::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/mysql/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

build(sql) click to toggle source
# File lib/mini_sql/mysql/connection.rb, line 54
def build(sql)
  Builder.new(self, sql)
end
escape_string(str) click to toggle source
# File lib/mini_sql/mysql/connection.rb, line 50
def escape_string(str)
  raw_connection.escape(str)
end
exec(sql, *params) click to toggle source
# File lib/mini_sql/mysql/connection.rb, line 35
def exec(sql, *params)
  run(sql, :array, params)
  raw_connection.affected_rows
end
prepared(condition = true) click to toggle source
# File lib/mini_sql/mysql/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/mysql/connection.rb, line 40
def query(sql, *params)
  result = run(sql, :array, params)
  deserializer_cache.materialize(result)
end
query_array(sql, *params) click to toggle source
# File lib/mini_sql/mysql/connection.rb, line 31
def query_array(sql, *params)
  run(sql, :array, params).to_a
end
query_decorator(decorator, sql, *params) click to toggle source
# File lib/mini_sql/mysql/connection.rb, line 45
def query_decorator(decorator, sql, *params)
  result = run(sql, :array, params)
  deserializer_cache.materialize(result, decorator)
end
query_hash(sql, *params) click to toggle source
# File lib/mini_sql/mysql/connection.rb, line 26
def query_hash(sql, *params)
  result = run(sql, :hash, params)
  result.to_a
end
query_single(sql, *params) click to toggle source
# File lib/mini_sql/mysql/connection.rb, line 22
def query_single(sql, *params)
  run(sql, :array, params).to_a.flatten!
end

Private Instance Methods

run(sql, as, params) click to toggle source
# File lib/mini_sql/mysql/connection.rb, line 60
def run(sql, as, params)
  if params && params.length > 0
    sql = param_encoder.encode(sql, *params)
  end
  raw_connection.query(
    sql,
    as: as,
    database_timezone: :utc,
    application_timezone: :utc,
    cast_booleans: true,
    cast: true,
    cache_rows: true,
    symbolize_keys: false
  )
end