jdbc-helper 0.4.3 → 0.4.4
Sign up to get free protection for your applications and to get access to all the features.
@@ -50,7 +50,7 @@ class TableWrapper < ObjectWrapper
|
|
50
50
|
# @param [List of Hash/String] where Filter conditions
|
51
51
|
# @return [Fixnum] Count of the records.
|
52
52
|
def count *where
|
53
|
-
@connection.query(JDBCHelper::SQL.count name,
|
53
|
+
@connection.query(JDBCHelper::SQL.count name, merge_where(self, where))[0][0].to_i
|
54
54
|
end
|
55
55
|
|
56
56
|
# Sees if the table is empty
|
@@ -90,7 +90,9 @@ class TableWrapper < ObjectWrapper
|
|
90
90
|
# :where element of the given hash can (usually should) point to another Hash representing update filters.
|
91
91
|
# @return [Fixnum] Number of affected records
|
92
92
|
def update data_hash_with_where
|
93
|
-
|
93
|
+
where_ext = data_hash_with_where.delete(:where)
|
94
|
+
where_ext = [where_ext] unless where_ext.is_a? Array
|
95
|
+
where = merge_where(self, where_ext.compact)
|
94
96
|
@connection.send @update_method, JDBCHelper::SQL.update(name, data_hash_with_where, where)
|
95
97
|
end
|
96
98
|
|
@@ -98,7 +100,8 @@ class TableWrapper < ObjectWrapper
|
|
98
100
|
# @param [List of Hash/String] where Delete filters
|
99
101
|
# @return [Fixnum] Number of affected records
|
100
102
|
def delete *where
|
101
|
-
|
103
|
+
where = merge_where(self, where)
|
104
|
+
@connection.send @update_method, JDBCHelper::SQL.delete(name, where)
|
102
105
|
end
|
103
106
|
|
104
107
|
# Empties the table.
|
@@ -137,14 +140,14 @@ class TableWrapper < ObjectWrapper
|
|
137
140
|
# Returns a new TableWrapper object which can be used to execute a select
|
138
141
|
# statement for the table with the specified filter conditions.
|
139
142
|
# If a block is given, executes the select statement and yields each row to the block.
|
140
|
-
# @param [Hash/String] Filter conditions
|
143
|
+
# @param [List of Hash/String] Filter conditions
|
141
144
|
# @return [JDBCHelper::TableWrapper]
|
142
145
|
# @since 0.4.0
|
143
146
|
def where *conditions, &block
|
144
147
|
raise ArgumentError.new("Wrong number of arguments") if conditions.empty?
|
145
148
|
|
146
149
|
obj = self.dup
|
147
|
-
obj
|
150
|
+
merge_where(obj, conditions, true)
|
148
151
|
ret obj, &block
|
149
152
|
end
|
150
153
|
|
@@ -215,6 +218,12 @@ private
|
|
215
218
|
obj
|
216
219
|
end
|
217
220
|
end
|
221
|
+
|
222
|
+
def merge_where obj, where, apply = false
|
223
|
+
merged = (obj.instance_variable_get(:@query_where) || []) + (where || [])
|
224
|
+
obj.instance_variable_set :@query_where, merged if apply
|
225
|
+
merged
|
226
|
+
end
|
218
227
|
end#TableWrapper
|
219
228
|
end#JDBCHelper
|
220
229
|
|
data/test/test_object_wrapper.rb
CHANGED
@@ -174,10 +174,16 @@ class TestObjectWrapper < Test::Unit::TestCase
|
|
174
174
|
# Count
|
175
175
|
assert_equal 100, table.count
|
176
176
|
assert_equal 100, table.count(:alpha => 100)
|
177
|
+
assert_equal 1, table.where(:alpha => 100).count(:id => 1) # scoped
|
178
|
+
assert_equal 0, table.where(:alpha => 200).count(:id => 1) # scoped
|
177
179
|
assert_equal 0, table.count(:beta => nil)
|
178
180
|
|
179
181
|
assert_equal 100, table.where(:alpha => 100).count
|
180
182
|
assert_equal 0, table.where(:beta => nil).count
|
183
|
+
assert_equal 40, table.where('id >= 11', 'id <= 50').count
|
184
|
+
assert_equal 40, table.where('id >= 11').count('id <= 50')
|
185
|
+
assert_equal 40, table.where('id >= 11').where('id <= 50').count
|
186
|
+
assert_equal 40, table.where('id >= 11').where('id <= 50').where('1 = 1').count
|
181
187
|
assert_equal 0, table.where(:alpha => 100).count(:beta => nil)
|
182
188
|
|
183
189
|
assert_equal true, table.empty?(:beta => nil)
|
@@ -327,8 +333,9 @@ class TestObjectWrapper < Test::Unit::TestCase
|
|
327
333
|
insert table
|
328
334
|
|
329
335
|
assert_equal 10, table.update(:beta => 0, :where => { :id => (1..10) })
|
336
|
+
assert_equal 2, table.where(:id => (55..56)).update(:beta => 0, :where => { :id => (51..60) })
|
330
337
|
assert_equal 10, table.where(:id => (11..20)).update(:beta => 0)
|
331
|
-
assert_equal
|
338
|
+
assert_equal 22, table.count(:beta => 0)
|
332
339
|
assert_equal 100, table.update(:beta => 1)
|
333
340
|
end
|
334
341
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: jdbc-helper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.4.
|
5
|
+
version: 0.4.4
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Junegunn Choi
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-06-
|
13
|
+
date: 2011-06-09 00:00:00 +09:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|