Class: MiniSql::Connection
- Inherits:
-
Object
- Object
- MiniSql::Connection
- Defined in:
- lib/mini_sql/connection.rb
Class Method Summary collapse
Instance Method Summary collapse
- #exec(sql, params = nil) ⇒ Object
-
#initialize(conn, deserializer_cache = nil, type_map = nil) ⇒ Connection
constructor
A new instance of Connection.
- #query(sql, params = nil) ⇒ Object
- #query_single(sql, params = nil) ⇒ Object
Constructor Details
#initialize(conn, deserializer_cache = nil, type_map = nil) ⇒ Connection
Returns a new instance of Connection.
16 17 18 19 20 21 |
# File 'lib/mini_sql/connection.rb', line 16 def initialize(conn, deserializer_cache = nil, type_map = nil) # TODO adapter to support other databases @conn = conn @deserializer_cache = deserializer_cache || Connection.default_deserializer_cache @type_map = type_map || Connection.type_map(conn) end |
Class Method Details
.default_deserializer_cache ⇒ Object
4 5 6 |
# File 'lib/mini_sql/connection.rb', line 4 def self.default_deserializer_cache @deserializer_cache ||= DeserializerCache.new end |
.type_map(conn) ⇒ Object
8 9 10 11 12 13 14 |
# File 'lib/mini_sql/connection.rb', line 8 def self.type_map(conn) @type_map ||= begin map = PG::BasicTypeMapForResults.new(conn) map.add_coder(MiniSql::Coders::NumericCoder.new(name: "numeric", oid: 1700, format: 0)) end end |
Instance Method Details
#exec(sql, params = nil) ⇒ Object
39 40 41 42 43 44 |
# File 'lib/mini_sql/connection.rb', line 39 def exec(sql, params=nil) result = run(sql, params) result.cmd_tuples ensure result.clear if result end |
#query(sql, params = nil) ⇒ Object
31 32 33 34 35 36 37 |
# File 'lib/mini_sql/connection.rb', line 31 def query(sql, params=nil) result = run(sql, params) result.type_map = @type_map @deserializer_cache.materialize(result) ensure result.clear if result end |
#query_single(sql, params = nil) ⇒ Object
23 24 25 26 27 28 29 |
# File 'lib/mini_sql/connection.rb', line 23 def query_single(sql, params=nil) result = run(sql, params) result.type_map = @type_map result.column_values(0) ensure result.clear if result end |