Class: DB::MariaDB::Connection

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

Overview

This implements the interface between the underyling native interface interface and “standardised” connection interface.

Instance Method Summary collapse

Constructor Details

#initialize(**options) ⇒ Connection

Returns a new instance of Connection.



32
33
34
35
36
# File 'lib/db/mariadb/connection.rb', line 32

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

Instance Method Details

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



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/db/mariadb/connection.rb', line 75

def append_identifier(value, buffer = String.new)
	case value
	when Array
		first = true
		value.each do |part|
			buffer << '.' unless first
			first = false
			
			buffer << escape_identifier(part)
		end
	else
		buffer << escape_identifier(value)
	end
	
	return buffer
end

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



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

def append_literal(value, buffer = String.new)
	case value
	when Time, DateTime
		append_string(value.utc.strftime('%Y-%m-%d %H:%M:%S'), buffer)
	when Date
		append_string(value.strftime('%Y-%m-%d'), buffer)
	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



48
49
50
51
52
# File 'lib/db/mariadb/connection.rb', line 48

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

#closeObject



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

def close
	@native.close
	
	super
end

#key_column(name = 'id', primary: true, null: false) ⇒ Object



92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/db/mariadb/connection.rb', line 92

def key_column(name = 'id', primary: true, null: false)
	buffer = String.new
	
	append_identifier(name, buffer)
	
	buffer << " BIGINT"
	
	if primary
		buffer << " AUTO_INCREMENT PRIMARY KEY"
	elsif !null
		buffer << " NOT NULL"
	end
	
	return buffer
end

#next_resultObject



118
119
120
# File 'lib/db/mariadb/connection.rb', line 118

def next_result
	@native.next_result
end

#send_query(statement) ⇒ Object



112
113
114
115
116
# File 'lib/db/mariadb/connection.rb', line 112

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

#statusObject



108
109
110
# File 'lib/db/mariadb/connection.rb', line 108

def status
	@native.status
end

#typesObject



44
45
46
# File 'lib/db/mariadb/connection.rb', line 44

def types
	@native.types
end