gloo-mysql 1.1 → 1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/mysql.rb +45 -49
  3. metadata +83 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e9d45a88a3a1eb006e70be0d3b54874923e1f4dd02ac2f3c297cd1921975d1f9
4
- data.tar.gz: b5e02252e4201e5ded230d69171304126c287570b3cd0c8af2e02cf742a3e26c
3
+ metadata.gz: 1a1b5f86ddb44b51299e14599208fb5276529e7675e47decdee1d7572ce28745
4
+ data.tar.gz: 3589a40a1974de5cc576471bfbe5e73008b887157a851f9cde8ee834ed9ce224
5
5
  SHA512:
6
- metadata.gz: 5b1addd1be16de2b24a32cdd92b8d5048483370c291315409eae5bd247c6479428a5c3968392ec4d2bcf1afe6495a868a180d7937b0f75322d4c12c201b117cf
7
- data.tar.gz: cf786e9a6d8ab705f5d679e97ee55b57a1c9c1ca05e262ac95c651a3e9265c3c080513ca33188eace2a4a9ac2bf946c11e77011d06b5594df5c436c2a804a7d7
6
+ metadata.gz: 4778f6a9ec72070177b2059267d8421998c7b11f181594211ac9f49daa3c6b2ec2fa2f8105050ea615e285a416f52d317cc3d2017fafedbff36e38285944f990
7
+ data.tar.gz: 18bd34ada82a4fffb813066d3384f7d04f26010c2ddd3e7a149d048bec5423ac92d297162090538276221380131bf8123c62398eb45c57b7ef0f4e96673b9542
data/lib/mysql.rb CHANGED
@@ -17,9 +17,13 @@
17
17
  # flags = opts[:flags] || 0
18
18
  #
19
19
  require 'mysql2'
20
+ require 'db_connection'
20
21
 
21
22
  class Mysql < Gloo::Core::Obj
22
23
 
24
+ # Shared driver behaviour from gloo-db: errors, verify, setup problems.
25
+ include DbConnection
26
+
23
27
  KEYWORD = 'mysql'.freeze
24
28
  KEYWORD_SHORT = 'mysql'.freeze
25
29
 
@@ -80,12 +84,22 @@ class Mysql < Gloo::Core::Obj
80
84
  end
81
85
 
82
86
  #
83
- # SSH to the host and execute the command, then update result.
87
+ # Verify that the database connection can be established.
88
+ # It is true if it can, false if not (with the reason in the error).
84
89
  #
85
90
  def msg_verify
86
- return unless connects?
91
+ verify_connection do
92
+ client = Mysql2::Client.new( connection_params )
93
+ client.close
94
+ end
95
+ end
87
96
 
88
- @engine.heap.it.set_to true
97
+ #
98
+ # The exception classes that are database errors (DbConnection):
99
+ # Query reports these as 'Query failed: …'.
100
+ #
101
+ def database_errors
102
+ return [ Mysql2::Error ]
89
103
  end
90
104
 
91
105
 
@@ -112,13 +126,7 @@ class Mysql < Gloo::Core::Obj
112
126
  @engine.log.debug "Opening a new Connection."
113
127
  end
114
128
 
115
- h = {
116
- host: host_value,
117
- database: db_value,
118
- username: user_value,
119
- password: passwd_value
120
- }
121
- client = Mysql2::Client.new( h )
129
+ client = Mysql2::Client.new( connection_params )
122
130
 
123
131
  app.cache_db_client( self, client ) if app
124
132
 
@@ -134,33 +142,30 @@ class Mysql < Gloo::Core::Obj
134
142
 
135
143
  heads = []
136
144
  data = []
137
- begin
138
- if params
139
- pst = client.prepare( sql )
140
- rs = pst.execute( *params, :as => :array )
141
- if rs
142
- rs.each do |row|
143
- arr = []
144
- row.each do |o|
145
- arr << o
146
- end
147
- data << arr
145
+ # Database errors come out as exceptions, for Query to report.
146
+ if params
147
+ pst = client.prepare( sql )
148
+ rs = pst.execute( *params, :as => :array )
149
+ if rs
150
+ rs.each do |row|
151
+ arr = []
152
+ row.each do |o|
153
+ arr << o
148
154
  end
155
+ data << arr
149
156
  end
150
- else
151
- rs = client.query( sql, :as => :array )
152
- if rs
153
- rs.each do |row|
154
- data << row
155
- end
157
+ end
158
+ else
159
+ rs = client.query( sql, :as => :array )
160
+ if rs
161
+ rs.each do |row|
162
+ data << row
156
163
  end
157
164
  end
158
-
159
- heads = rs.fields if rs
160
- rescue => e
161
- @engine.log_exception e
162
165
  end
163
166
 
167
+ heads = rs.fields if rs
168
+
164
169
  return [ heads, data ]
165
170
  end
166
171
 
@@ -227,24 +232,15 @@ class Mysql < Gloo::Core::Obj
227
232
  end
228
233
 
229
234
  #
230
- # Try the connection and make sure it works.
231
- # Returns true if we can establish a connection.
235
+ # The settings for a connection, from the children.
232
236
  #
233
- def connects?
234
- begin
235
- h = {
236
- host: host_value,
237
- database: db_value,
238
- username: user_value,
239
- password: passwd_value
240
- }
241
- Mysql2::Client.new( h )
242
- rescue => e
243
- @engine.log_exception e
244
- @engine.heap.it.set_to false
245
- return false
246
- end
247
- return true
237
+ def connection_params
238
+ return {
239
+ host: host_value,
240
+ database: db_value,
241
+ username: user_value,
242
+ password: passwd_value
243
+ }
248
244
  end
249
245
 
250
246
  # ---------------------------------------------------------------------
@@ -266,7 +262,7 @@ class Mysql < Gloo::Core::Obj
266
262
  "password (string) — The user's password."
267
263
  ],
268
264
  :messages => [
269
- 'verify — Verify that the database connection can be established.'
265
+ 'verify — Verify that the database connection can be established. It is true if it can, false if not (with the reason in the error).'
270
266
  ],
271
267
  :examples => <<~EXAMPLES.strip
272
268
  mysql [can] :
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gloo-mysql
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.1'
4
+ version: '1.2'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Crane
@@ -29,6 +29,88 @@ dependencies:
29
29
  - - ">="
30
30
  - !ruby/object:Gem::Version
31
31
  version: 0.5.3
32
+ - !ruby/object:Gem::Dependency
33
+ name: gloo
34
+ requirement: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: '7.0'
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: '7.0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: gloo-db
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: '1.3'
53
+ type: :runtime
54
+ prerelease: false
55
+ version_requirements: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: '1.3'
60
+ - !ruby/object:Gem::Dependency
61
+ name: bundler
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ type: :development
68
+ prerelease: false
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ - !ruby/object:Gem::Dependency
75
+ name: minitest
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '5.1'
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: 5.14.2
84
+ type: :development
85
+ prerelease: false
86
+ version_requirements: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '5.1'
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: 5.14.2
94
+ - !ruby/object:Gem::Dependency
95
+ name: rake
96
+ requirement: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - "~>"
99
+ - !ruby/object:Gem::Version
100
+ version: '13.0'
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: 13.0.1
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '13.0'
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: 13.0.1
32
114
  description: Adds MySQL support to Gloo.
33
115
  email:
34
116
  - eric.crane@mac.com