Class: DB::Postgres::Connection

Inherits:
Async::Pool::Resource
  • Object
show all
Defined in:
lib/db/postgres/connection.rb

Overview

This implements the interface between the underlying

Instance Method Summary collapse

Constructor Details

#initialize(**options) ⇒ Connection

Returns a new instance of Connection.



38
39
40
41
42
# File 'lib/db/postgres/connection.rb', line 38

def initialize(**options)
	@native = Native::Connection.connect(**options)
	
	super()
end

Instance Method Details

#append_identifier(value, buffer = String.new) ⇒ Object



73
74
75
76
77
# File 'lib/db/postgres/connection.rb', line 73

def append_identifier(value, buffer = String.new)
	buffer << @native.escape_identifier(value)
	
	return buffer
end

#append_literal(value, buffer = String.new) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/db/postgres/connection.rb', line 56

def append_literal(value, buffer = String.new)
	case value
	when Numeric
		buffer << value.to_s
	when TrueClass
		buffer << 'TRUE'
	when FalseClass
		buffer << 'FALSE'
	when nil
		buffer << 'NULL'
	else
		append_string(value, buffer)
	end
	
	return buffer
end

#append_string(value, buffer = String.new) ⇒ Object



50
51
52
53
54
# File 'lib/db/postgres/connection.rb', line 50

def append_string(value, buffer = String.new)
	buffer << @native.escape_literal(value)
	
	return buffer
end

#call(statement, streaming: false) ⇒ Object



91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/db/postgres/connection.rb', line 91

def call(statement, streaming: false)
	@native.send_query(statement)
	
	@native.single_row_mode! if streaming
	
	last_result = nil
	
	while result = @native.next_result
		last_result = result
	end
	
	return last_result
end

#closeObject



44
45
46
47
48
# File 'lib/db/postgres/connection.rb', line 44

def close
	@native.close
	
	super
end

#next_resultObject



87
88
89
# File 'lib/db/postgres/connection.rb', line 87

def next_result
	@native.next_result
end

#send_query(statement) ⇒ Object



83
84
85
# File 'lib/db/postgres/connection.rb', line 83

def send_query(statement)
	@native.send_query(statement)
end

#statusObject



79
80
81
# File 'lib/db/postgres/connection.rb', line 79

def status
	@native.status
end