sql_helper 0.1.0 → 0.1.1
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.
- data/lib/sql_helper.rb +11 -6
- data/lib/sql_helper/version.rb +1 -1
- data/test/test_sql_helper.rb +6 -3
- metadata +4 -4
data/lib/sql_helper.rb
CHANGED
@@ -221,7 +221,7 @@ module SQLHelper
|
|
221
221
|
end
|
222
222
|
when Hash
|
223
223
|
cond.each do |col, cnd|
|
224
|
-
ret =
|
224
|
+
ret = eval_cond col, cnd, prepared
|
225
225
|
sqls << ret[0]
|
226
226
|
params += ret[1..-1] || []
|
227
227
|
end
|
@@ -238,7 +238,7 @@ module SQLHelper
|
|
238
238
|
end
|
239
239
|
end
|
240
240
|
|
241
|
-
def
|
241
|
+
def eval_cond col, cnd, prepared
|
242
242
|
case cnd
|
243
243
|
when Numeric, String
|
244
244
|
prepared ? ["#{col} = ?", cnd] : [[col, quote(cnd)].join(' = ')]
|
@@ -256,7 +256,7 @@ module SQLHelper
|
|
256
256
|
sqls = []
|
257
257
|
params = []
|
258
258
|
cnd.each do |v|
|
259
|
-
ret =
|
259
|
+
ret = eval_cond col, v, prepared
|
260
260
|
sqls << ret[0]
|
261
261
|
params += ret[1..-1]
|
262
262
|
end
|
@@ -277,15 +277,20 @@ module SQLHelper
|
|
277
277
|
["#{col} <> ?", val] :
|
278
278
|
["#{col} <> #{quote val}"]
|
279
279
|
else
|
280
|
-
ary =
|
281
|
-
ary[0]
|
280
|
+
ary = eval_cond col, val, prepared
|
281
|
+
ary[0] =
|
282
|
+
if ary[0] =~ /^\(.*\)$/
|
283
|
+
"not #{ary[0]}"
|
284
|
+
else
|
285
|
+
"not (#{ary[0]})"
|
286
|
+
end
|
282
287
|
ary
|
283
288
|
end
|
284
289
|
when :or
|
285
290
|
sqls = []
|
286
291
|
params = []
|
287
292
|
val.each do |v|
|
288
|
-
ret =
|
293
|
+
ret = eval_cond col, v, prepared
|
289
294
|
sqls << ret[0]
|
290
295
|
params += ret[1..-1]
|
291
296
|
end
|
data/lib/sql_helper/version.rb
CHANGED
data/test/test_sql_helper.rb
CHANGED
@@ -30,7 +30,9 @@ class TestSQLHelper < MiniTest::Unit::TestCase
|
|
30
30
|
:r => { :or => [{ :like => ['ABC%', 'DEF%'] }, { :not => { :like => 'XYZ%' } }] },
|
31
31
|
:s => { :not => 100 },
|
32
32
|
:t => { :not => 'str' },
|
33
|
-
:u => ('aa'..'zz')
|
33
|
+
:u => ('aa'..'zz'),
|
34
|
+
:v => { :not => { :gt => 100, :lt => 200 } },
|
35
|
+
:w => { :not => { :sql => 'sysdate' } }
|
34
36
|
},
|
35
37
|
[],
|
36
38
|
[nil],
|
@@ -39,7 +41,7 @@ class TestSQLHelper < MiniTest::Unit::TestCase
|
|
39
41
|
' '
|
40
42
|
]
|
41
43
|
|
42
|
-
@wherep = ["where (z <> 100) and (y = ? or y = ? or y = ? or z = 'xxx') and a = ? and b between ? and ? and c >= ? and c < ? and (d = ? or d = ?) and e = sysdate and f is not null and g > ? and h < ? and i like ? and not j like ? and k <= sysdate and l >= ? and l <= ? and not (m = ? or m >= ? and m <= ?) and n is null and not o between ? and ? and (p > ? or p < ?) and (q like ? or q like ?) and ((r like ? or r like ?) or not r like ?) and s <> ? and t <> ? and u between ? and ?",
|
44
|
+
@wherep = ["where (z <> 100) and (y = ? or y = ? or y = ? or z = 'xxx') and a = ? and b between ? and ? and c >= ? and c < ? and (d = ? or d = ?) and e = sysdate and f is not null and g > ? and h < ? and i like ? and not (j like ?) and k <= sysdate and l >= ? and l <= ? and not (m = ? or m >= ? and m <= ?) and n is null and not (o between ? and ?) and (p > ? or p < ?) and (q like ? or q like ?) and ((r like ? or r like ?) or not (r like ?)) and s <> ? and t <> ? and u between ? and ? and not (v > ? and v < ?) and not (w = sysdate)",
|
43
45
|
200, "Macy's???", BigDecimal("3.141592"),
|
44
46
|
"hello 'world'???",
|
45
47
|
1, 10,
|
@@ -57,7 +59,8 @@ class TestSQLHelper < MiniTest::Unit::TestCase
|
|
57
59
|
'ABC%', 'DEF%', 'XYZ%',
|
58
60
|
100,
|
59
61
|
'str',
|
60
|
-
'aa', 'zz'
|
62
|
+
'aa', 'zz',
|
63
|
+
100, 200
|
61
64
|
]
|
62
65
|
|
63
66
|
params = @wherep[1..-1]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sql_helper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-06-
|
12
|
+
date: 2013-06-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -90,7 +90,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
90
90
|
version: '0'
|
91
91
|
segments:
|
92
92
|
- 0
|
93
|
-
hash:
|
93
|
+
hash: 1884977039615962457
|
94
94
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
95
95
|
none: false
|
96
96
|
requirements:
|
@@ -99,7 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
99
99
|
version: '0'
|
100
100
|
segments:
|
101
101
|
- 0
|
102
|
-
hash:
|
102
|
+
hash: 1884977039615962457
|
103
103
|
requirements: []
|
104
104
|
rubyforge_project:
|
105
105
|
rubygems_version: 1.8.25
|