mysql_framework 0.0.10 → 0.0.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/mysql_framework/sql_query.rb +90 -32
- data/lib/mysql_framework/version.rb +1 -1
- data/spec/lib/mysql_framework/sql_query_spec.rb +127 -46
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 63af1c4a1fb7d7ae8d69681134a6e58ade4b2baa6070443bf8ecb2e8f5a5b94e
|
4
|
+
data.tar.gz: 89478ee0fec0d2e6fb9ac3dbac4efeed74e751dce998961f7cd547b6d90632d2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 479082218477782a3c435c31cdabab1285f48d50a210f03b94fd4ace9569e6cf0497612dc45e451558b8a5c4ad0c982c11a1905057bc120228bd81029d359b52
|
7
|
+
data.tar.gz: 31c848e20ee916e9ae61d1454b711df9dacf78e81f1265d798aafae061f5465af0b6e0066fdce8886c271be8510c14e415f83320d9b3c9b88264ce26b55464a2
|
@@ -18,119 +18,177 @@ module MysqlFramework
|
|
18
18
|
|
19
19
|
# This method is called to start a select query
|
20
20
|
def select(*columns)
|
21
|
-
@sql = "
|
21
|
+
@sql = "SELECT #{columns.join(', ')}"
|
22
|
+
|
22
23
|
self
|
23
24
|
end
|
24
25
|
|
25
26
|
# This method is called to start a delete query
|
26
27
|
def delete
|
27
|
-
@sql = '
|
28
|
+
@sql = 'DELETE'
|
29
|
+
|
28
30
|
self
|
29
31
|
end
|
30
32
|
|
31
33
|
# This method is called to start an update query
|
32
34
|
def update(table, partition = nil)
|
33
|
-
@sql = "
|
34
|
-
@sql += "
|
35
|
+
@sql = "UPDATE #{table}"
|
36
|
+
@sql += " PARTITION (p#{partition})" unless partition.nil?
|
37
|
+
|
35
38
|
self
|
36
39
|
end
|
37
40
|
|
38
41
|
# This method is called to start an insert query
|
39
42
|
def insert(table, partition = nil)
|
40
|
-
@sql += "
|
41
|
-
@sql += "
|
43
|
+
@sql += "INSERT INTO #{table}"
|
44
|
+
@sql += " PARTITION (p#{partition})" unless partition.nil?
|
45
|
+
|
42
46
|
self
|
43
47
|
end
|
44
48
|
|
45
49
|
# This method is called to specify the columns to insert into.
|
46
50
|
def into(*columns)
|
47
|
-
@sql += " (#{columns.join(',')})"
|
51
|
+
@sql += " (#{columns.join(', ')})"
|
52
|
+
|
48
53
|
self
|
49
54
|
end
|
50
55
|
|
51
56
|
# This method is called to specify the values to insert.
|
52
57
|
def values(*values)
|
53
|
-
@sql += "
|
54
|
-
|
55
|
-
|
56
|
-
|
58
|
+
@sql += " VALUES (#{values.map { '?' }.join(', ')})"
|
59
|
+
|
60
|
+
values.each { |value| @params << value }
|
61
|
+
|
57
62
|
self
|
58
63
|
end
|
59
64
|
|
60
65
|
# This method is called to specify the columns to update.
|
61
66
|
def set(values)
|
62
|
-
@sql += '
|
63
|
-
|
64
|
-
|
65
|
-
@
|
67
|
+
@sql += ' SET '
|
68
|
+
|
69
|
+
values.each do |key, param|
|
70
|
+
@sql += "`#{key}` = ?, "
|
71
|
+
@params << param
|
66
72
|
end
|
67
|
-
|
73
|
+
|
74
|
+
@sql = @sql.chomp(', ')
|
75
|
+
|
76
|
+
self
|
77
|
+
end
|
78
|
+
|
79
|
+
def increment(values)
|
80
|
+
@sql += @sql.include?('SET') ? ', ' : ' SET '
|
81
|
+
|
82
|
+
values.each { |key, by| @sql += "`#{key}` = `#{key}` + #{by}, " }
|
83
|
+
|
84
|
+
@sql = @sql.chomp(', ')
|
85
|
+
|
86
|
+
self
|
87
|
+
end
|
88
|
+
|
89
|
+
def decrement(values)
|
90
|
+
@sql += @sql.include?('SET') ? ', ' : ' SET '
|
91
|
+
|
92
|
+
values.each { |key, by| @sql += "`#{key}` = `#{key}` - #{by}, " }
|
93
|
+
|
94
|
+
@sql = @sql.chomp(', ')
|
95
|
+
|
68
96
|
self
|
69
97
|
end
|
70
98
|
|
71
99
|
# This method is called to specify the table/partition a select/delete query is for.
|
72
100
|
def from(table, partition = nil)
|
73
|
-
@sql += "
|
74
|
-
@sql += "
|
101
|
+
@sql += " FROM #{table}"
|
102
|
+
@sql += " PARTITION (p#{partition})" unless partition.nil?
|
103
|
+
|
75
104
|
self
|
76
105
|
end
|
77
106
|
|
78
107
|
# This method is called to specify a where clause for a query.
|
79
108
|
def where(*conditions)
|
80
|
-
@sql += '
|
81
|
-
@sql += " (#{conditions.join('
|
82
|
-
|
83
|
-
|
84
|
-
|
109
|
+
@sql += ' WHERE' unless @sql.include?('WHERE')
|
110
|
+
@sql += " (#{conditions.join(' AND ')}) "
|
111
|
+
|
112
|
+
conditions.each { |condition| @params << condition.value }
|
113
|
+
|
85
114
|
self
|
86
115
|
end
|
87
116
|
|
88
117
|
# This method is called to add an `and` keyword to a query to provide additional where clauses.
|
89
118
|
def and
|
90
|
-
@sql += '
|
119
|
+
@sql += 'AND'
|
120
|
+
|
91
121
|
self
|
92
122
|
end
|
93
123
|
|
94
124
|
# This method is called to add an `or` keyword to a query to provide alternate where clauses.
|
95
125
|
def or
|
96
|
-
@sql += '
|
126
|
+
@sql += 'OR'
|
127
|
+
|
97
128
|
self
|
98
129
|
end
|
99
130
|
|
100
131
|
# This method is called to add an `order by` statement to a query
|
101
132
|
def order(*columns)
|
102
|
-
@sql += "
|
133
|
+
@sql += " ORDER BY #{columns.join(', ')}"
|
134
|
+
|
103
135
|
self
|
104
136
|
end
|
105
137
|
|
106
138
|
# This method is called to add an `order by ... desc` statement to a query
|
107
139
|
def order_desc(*columns)
|
108
140
|
order(*columns)
|
109
|
-
|
141
|
+
|
142
|
+
@sql += ' DESC'
|
143
|
+
|
110
144
|
self
|
111
145
|
end
|
112
146
|
|
113
147
|
# This method is called to add a limit to a query
|
114
148
|
def limit(count)
|
115
|
-
@sql += "
|
149
|
+
@sql += " LIMIT #{count}"
|
150
|
+
|
151
|
+
self
|
152
|
+
end
|
153
|
+
|
154
|
+
# This method is called to add an offset to a query
|
155
|
+
def offset(offset)
|
156
|
+
raise 'A limit clause must be supplied to use an offset' unless @sql.include?('LIMIT')
|
157
|
+
|
158
|
+
@sql += " OFFSET #{offset}"
|
159
|
+
|
116
160
|
self
|
117
161
|
end
|
118
162
|
|
119
163
|
# This method is called to add a join statement to a query.
|
120
|
-
def join(table)
|
121
|
-
@sql += "
|
164
|
+
def join(table, type: nil)
|
165
|
+
@sql += " #{type.upcase}" unless type.nil?
|
166
|
+
@sql += " JOIN #{table}"
|
167
|
+
|
122
168
|
self
|
123
169
|
end
|
124
170
|
|
125
171
|
# This method is called to add the `on` detail to a join statement.
|
126
172
|
def on(column_1, column_2)
|
127
|
-
@sql += "
|
173
|
+
@sql += " ON #{column_1} = #{column_2}"
|
174
|
+
|
128
175
|
self
|
129
176
|
end
|
130
177
|
|
131
178
|
# This method is called to add a `group by` statement to a query
|
132
179
|
def group_by(*columns)
|
133
|
-
@sql += "
|
180
|
+
@sql += " GROUP BY #{columns.join(', ')}"
|
181
|
+
|
182
|
+
self
|
183
|
+
end
|
184
|
+
|
185
|
+
# This method is called to specify a having clause for a query.
|
186
|
+
def having(*conditions)
|
187
|
+
@sql += ' HAVING' unless @sql.include?('HAVING')
|
188
|
+
@sql += " (#{conditions.join(' AND ')}) "
|
189
|
+
|
190
|
+
conditions.each { |condition| @params << condition.value }
|
191
|
+
|
134
192
|
self
|
135
193
|
end
|
136
194
|
end
|
@@ -20,7 +20,7 @@ describe MysqlFramework::SqlQuery do
|
|
20
20
|
'2018-06-28 10:00:00'
|
21
21
|
)
|
22
22
|
|
23
|
-
expect(subject.sql).to eq('
|
23
|
+
expect(subject.sql).to eq('INSERT INTO `gems` PARTITION (p15) (`gems`.`name`, `gems`.`author`, `gems`.`created_at`, `gems`.`updated_at`) VALUES (?, ?, ?, ?)')
|
24
24
|
expect(subject.params).to eq(['mysql_framework', 'sage', '2018-06-28 10:00:00', '2018-06-28 10:00:00'])
|
25
25
|
end
|
26
26
|
|
@@ -30,32 +30,23 @@ describe MysqlFramework::SqlQuery do
|
|
30
30
|
name: 'mysql_framework',
|
31
31
|
updated_at: '2018-06-28 13:00:00'
|
32
32
|
)
|
33
|
-
.where(
|
34
|
-
gems[:id].eq('12345')
|
35
|
-
)
|
33
|
+
.where(gems[:id].eq('12345'))
|
36
34
|
|
37
|
-
expect(subject.sql).to eq('
|
35
|
+
expect(subject.sql).to eq('UPDATE `gems` PARTITION (p20) SET `name` = ?, `updated_at` = ? WHERE (`gems`.`id` = ?)')
|
38
36
|
expect(subject.params).to eq(['mysql_framework', '2018-06-28 13:00:00', '12345'])
|
39
37
|
end
|
40
38
|
|
41
39
|
it 'builds the delete query as expected' do
|
42
|
-
subject.delete.from(gems, 30)
|
43
|
-
.where(
|
44
|
-
gems[:id].eq('45678')
|
45
|
-
)
|
40
|
+
subject.delete.from(gems, 30).where(gems[:id].eq('45678'))
|
46
41
|
|
47
|
-
expect(subject.sql).to eq('
|
42
|
+
expect(subject.sql).to eq('DELETE FROM `gems` PARTITION (p30) WHERE (`gems`.`id` = ?)')
|
48
43
|
expect(subject.params).to eq(['45678'])
|
49
44
|
end
|
50
45
|
|
51
46
|
it 'builds a basic select query as expected' do
|
52
|
-
subject.select('*')
|
53
|
-
.from(gems, 40)
|
54
|
-
.where(
|
55
|
-
gems[:id].eq('9876')
|
56
|
-
)
|
47
|
+
subject.select('*').from(gems, 40).where(gems[:id].eq('9876'))
|
57
48
|
|
58
|
-
expect(subject.sql).to eq('
|
49
|
+
expect(subject.sql).to eq('SELECT * FROM `gems` PARTITION (p40) WHERE (`gems`.`id` = ?)')
|
59
50
|
expect(subject.params).to eq(['9876'])
|
60
51
|
end
|
61
52
|
|
@@ -63,11 +54,9 @@ describe MysqlFramework::SqlQuery do
|
|
63
54
|
subject.select('*')
|
64
55
|
.from(gems, 40)
|
65
56
|
.join(versions).on(versions[:gem_id], gems[:id])
|
66
|
-
.where(
|
67
|
-
gems[:id].eq('9876')
|
68
|
-
)
|
57
|
+
.where(gems[:id].eq('9876'))
|
69
58
|
|
70
|
-
expect(subject.sql).to eq('
|
59
|
+
expect(subject.sql).to eq('SELECT * FROM `gems` PARTITION (p40) JOIN `versions` ON `versions`.`gem_id` = `gems`.`id` WHERE (`gems`.`id` = ?)')
|
71
60
|
expect(subject.params).to eq(['9876'])
|
72
61
|
end
|
73
62
|
end
|
@@ -75,27 +64,31 @@ describe MysqlFramework::SqlQuery do
|
|
75
64
|
describe '#select' do
|
76
65
|
it 'sets the sql for a select statement' do
|
77
66
|
subject.select(gems[:id], gems[:name])
|
78
|
-
|
67
|
+
|
68
|
+
expect(subject.sql).to eq('SELECT `gems`.`id`, `gems`.`name`')
|
79
69
|
end
|
80
70
|
end
|
81
71
|
|
82
72
|
describe '#delete' do
|
83
73
|
it 'sets the sql for a delete statement' do
|
84
74
|
subject.delete
|
85
|
-
|
75
|
+
|
76
|
+
expect(subject.sql).to eq('DELETE')
|
86
77
|
end
|
87
78
|
end
|
88
79
|
|
89
80
|
describe '#update' do
|
90
81
|
it 'sets the sql for an update statement' do
|
91
82
|
subject.update(gems)
|
92
|
-
|
83
|
+
|
84
|
+
expect(subject.sql).to eq('UPDATE `gems`')
|
93
85
|
end
|
94
86
|
|
95
87
|
context 'when a partition is specified' do
|
96
88
|
it 'sets the sql for an update statement' do
|
97
89
|
subject.update(gems, 25)
|
98
|
-
|
90
|
+
|
91
|
+
expect(subject.sql).to eq('UPDATE `gems` PARTITION (p25)')
|
99
92
|
end
|
100
93
|
end
|
101
94
|
end
|
@@ -103,13 +96,15 @@ describe MysqlFramework::SqlQuery do
|
|
103
96
|
describe '#insert' do
|
104
97
|
it 'sets the sql for an insert statement' do
|
105
98
|
subject.insert(gems)
|
106
|
-
|
99
|
+
|
100
|
+
expect(subject.sql).to eq('INSERT INTO `gems`')
|
107
101
|
end
|
108
102
|
|
109
103
|
context 'when a partition is specified' do
|
110
104
|
it 'sets the sql for an insert statement' do
|
111
105
|
subject.insert(gems, 35)
|
112
|
-
|
106
|
+
|
107
|
+
expect(subject.sql).to eq('INSERT INTO `gems` PARTITION (p35)')
|
113
108
|
end
|
114
109
|
end
|
115
110
|
end
|
@@ -117,55 +112,91 @@ describe MysqlFramework::SqlQuery do
|
|
117
112
|
describe '#into' do
|
118
113
|
it 'sets the sql for an into statement' do
|
119
114
|
subject.into(gems[:name], gems[:author], gems[:created_at])
|
120
|
-
|
115
|
+
|
116
|
+
expect(subject.sql).to eq('(`gems`.`name`, `gems`.`author`, `gems`.`created_at`)')
|
121
117
|
end
|
122
118
|
end
|
123
119
|
|
124
120
|
describe '#values' do
|
125
121
|
it 'sets the sql for the values statement' do
|
126
122
|
subject.values('mysql_framework', 'sage', '2016-06-28 10:00:00')
|
127
|
-
|
123
|
+
|
124
|
+
expect(subject.sql).to eq('VALUES (?, ?, ?)')
|
128
125
|
end
|
129
126
|
end
|
130
127
|
|
131
128
|
describe '#set' do
|
132
129
|
it 'sets the sql for the set statement' do
|
133
130
|
subject.set(name: 'mysql_framework', author: 'sage', created_at: '2016-06-28 10:00:00')
|
134
|
-
|
131
|
+
|
132
|
+
expect(subject.sql).to eq('SET `name` = ?, `author` = ?, `created_at` = ?')
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
describe '#increment' do
|
137
|
+
it 'appends the sql for the increment statement' do
|
138
|
+
subject.set(updated_at: '2016-01-15 19:00:00').increment(count: 1)
|
139
|
+
|
140
|
+
expect(subject.sql).to eq('SET `updated_at` = ?, `count` = `count` + 1')
|
141
|
+
end
|
142
|
+
|
143
|
+
context 'when a set statement has not been issued' do
|
144
|
+
it 'appends the sql for the increment statement' do
|
145
|
+
subject.increment(count: 1)
|
146
|
+
|
147
|
+
expect(subject.sql).to eq('SET `count` = `count` + 1')
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
describe '#decrement' do
|
153
|
+
it 'appends the sql for the decrement statement' do
|
154
|
+
subject.set(updated_at: '2016-01-15 19:00:00').decrement(count: 1)
|
155
|
+
|
156
|
+
expect(subject.sql).to eq('SET `updated_at` = ?, `count` = `count` - 1')
|
157
|
+
end
|
158
|
+
|
159
|
+
context 'when a set statement has not been issued' do
|
160
|
+
it 'appends the sql for the decrement statement' do
|
161
|
+
subject.decrement(count: 1)
|
162
|
+
|
163
|
+
expect(subject.sql).to eq('SET `count` = `count` - 1')
|
164
|
+
end
|
135
165
|
end
|
136
166
|
end
|
137
167
|
|
138
168
|
describe '#from' do
|
139
169
|
it 'sets the sql for a from statement' do
|
140
170
|
subject.from(gems)
|
141
|
-
|
171
|
+
|
172
|
+
expect(subject.sql).to eq('FROM `gems`')
|
142
173
|
end
|
143
174
|
|
144
175
|
context 'when a partition is specified' do
|
145
176
|
it 'sets the sql for a from statement' do
|
146
177
|
subject.from(gems, 45)
|
147
|
-
|
178
|
+
|
179
|
+
expect(subject.sql).to eq('FROM `gems` PARTITION (p45)')
|
148
180
|
end
|
149
181
|
end
|
150
182
|
end
|
151
183
|
|
152
184
|
describe '#where' do
|
153
|
-
before
|
154
|
-
subject.where(gems['author'].eq('sage'), gems['created_at'].gt('2018-01-01 00:00:00'))
|
155
|
-
end
|
185
|
+
before(:each) { subject.where(gems[:author].eq('sage'), gems[:created_at].gt('2018-01-01 00:00:00')) }
|
156
186
|
|
157
187
|
it 'appends where to the sql' do
|
158
|
-
expect(subject.sql).to include('
|
188
|
+
expect(subject.sql).to include('WHERE')
|
159
189
|
end
|
160
190
|
|
161
191
|
it 'sets the sql for the where statement' do
|
162
|
-
expect(subject.sql).to eq('
|
192
|
+
expect(subject.sql).to eq('WHERE (`gems`.`author` = ? AND `gems`.`created_at` > ?)')
|
163
193
|
end
|
164
194
|
|
165
195
|
context 'when the sql already contains a where' do
|
166
196
|
it 'does not append an extra where' do
|
167
|
-
subject.and.where(gems[
|
168
|
-
|
197
|
+
subject.and.where(gems[:name].eq('mysql_framework'))
|
198
|
+
|
199
|
+
expect(subject.sql).to eq('WHERE (`gems`.`author` = ? AND `gems`.`created_at` > ?) AND (`gems`.`name` = ?)')
|
169
200
|
end
|
170
201
|
end
|
171
202
|
end
|
@@ -173,56 +204,106 @@ describe MysqlFramework::SqlQuery do
|
|
173
204
|
describe '#and' do
|
174
205
|
it 'appends the sql for an and statement' do
|
175
206
|
subject.and
|
176
|
-
|
207
|
+
|
208
|
+
expect(subject.sql).to eq('AND')
|
177
209
|
end
|
178
210
|
end
|
179
211
|
|
180
212
|
describe '#or' do
|
181
213
|
it 'appends the sql for an or statement' do
|
182
214
|
subject.or
|
183
|
-
|
215
|
+
|
216
|
+
expect(subject.sql).to eq('OR')
|
184
217
|
end
|
185
218
|
end
|
186
219
|
|
187
220
|
describe '#order' do
|
188
221
|
it 'appends the sql for an order statement' do
|
189
222
|
subject.order(gems[:created_at], gems[:updated_at])
|
190
|
-
|
223
|
+
|
224
|
+
expect(subject.sql).to eq('ORDER BY `gems`.`created_at`, `gems`.`updated_at`')
|
191
225
|
end
|
192
226
|
end
|
193
227
|
|
194
228
|
describe '#order_desc' do
|
195
229
|
it 'appends the sql for an order descending statement' do
|
196
230
|
subject.order_desc(gems[:created_at], gems[:updated_at])
|
197
|
-
|
231
|
+
|
232
|
+
expect(subject.sql).to eq('ORDER BY `gems`.`created_at`, `gems`.`updated_at` DESC')
|
198
233
|
end
|
199
234
|
end
|
200
235
|
|
201
236
|
describe '#limit' do
|
202
237
|
it 'appends the sql for a limit statement' do
|
203
238
|
subject.limit(10)
|
204
|
-
|
239
|
+
|
240
|
+
expect(subject.sql).to eq('LIMIT 10')
|
241
|
+
end
|
242
|
+
end
|
243
|
+
|
244
|
+
describe '#offset' do
|
245
|
+
it 'appends the sql for an offset statement' do
|
246
|
+
subject.limit(10).offset(5)
|
247
|
+
|
248
|
+
expect(subject.sql).to eq('LIMIT 10 OFFSET 5')
|
249
|
+
end
|
250
|
+
|
251
|
+
context 'when a limit statement is not found' do
|
252
|
+
it 'raises an error' do
|
253
|
+
expect { subject.offset(5) }.to raise_error(RuntimeError)
|
254
|
+
end
|
205
255
|
end
|
206
256
|
end
|
207
257
|
|
208
258
|
describe '#join' do
|
209
259
|
it 'appends the sql for a join statement' do
|
210
260
|
subject.join(versions)
|
211
|
-
|
261
|
+
|
262
|
+
expect(subject.sql).to eq('JOIN `versions`')
|
263
|
+
end
|
264
|
+
|
265
|
+
context 'when a type is supplied' do
|
266
|
+
it 'appends the sql for a join statement' do
|
267
|
+
subject.join(versions, type: 'LEFT OUTER')
|
268
|
+
|
269
|
+
expect(subject.sql).to eq('LEFT OUTER JOIN `versions`')
|
270
|
+
end
|
212
271
|
end
|
213
272
|
end
|
214
273
|
|
215
274
|
describe '#on' do
|
216
275
|
it 'appends the sql for the on statement' do
|
217
276
|
subject.on(gems[:id], versions[:gem_id])
|
218
|
-
|
277
|
+
|
278
|
+
expect(subject.sql).to eq('ON `gems`.`id` = `versions`.`gem_id`')
|
219
279
|
end
|
220
280
|
end
|
221
281
|
|
222
282
|
describe '#group_by' do
|
223
283
|
it 'appends the sql for a group by statement' do
|
224
284
|
subject.group_by(gems[:created_at], gems[:updated_at])
|
225
|
-
|
285
|
+
|
286
|
+
expect(subject.sql).to eq('GROUP BY `gems`.`created_at`, `gems`.`updated_at`')
|
287
|
+
end
|
288
|
+
end
|
289
|
+
|
290
|
+
describe '#having' do
|
291
|
+
before(:each) { subject.having(gems[:count].gt(1), gems[:count].lt(10)) }
|
292
|
+
|
293
|
+
it 'appends having to the sql' do
|
294
|
+
expect(subject.sql).to include('HAVING')
|
295
|
+
end
|
296
|
+
|
297
|
+
it 'sets the sql for the having statement' do
|
298
|
+
expect(subject.sql).to eq('HAVING (`gems`.`count` > ? AND `gems`.`count` < ?)')
|
299
|
+
end
|
300
|
+
|
301
|
+
context 'when the sql already contains a having' do
|
302
|
+
it 'does not append an extra having' do
|
303
|
+
subject.or.having(gems[:count].gt(20))
|
304
|
+
|
305
|
+
expect(subject.sql).to eq('HAVING (`gems`.`count` > ? AND `gems`.`count` < ?) OR (`gems`.`count` > ?)')
|
306
|
+
end
|
226
307
|
end
|
227
308
|
end
|
228
309
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mysql_framework
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sage
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-08-
|
11
|
+
date: 2018-08-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|