Skip to content

Commit d9b8326

Browse files
committed
Allow batching to use omit also
1 parent e12fa72 commit d9b8326

File tree

1 file changed

+40
-6
lines changed

1 file changed

+40
-6
lines changed

lib/filemaker/model/batches.rb

Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,59 @@
11
module Filemaker
22
module Model
33
module Batches
4-
def in_batches(batch_size: 200, options: {}, sleep: 0)
4+
def in_batches(batch_size: 200, options: {}, include: {}, omit: nil, sleep: 0)
55
output = []
6-
total = self.in(options).count
6+
7+
if options.present?
8+
include = options
9+
warn "Using `options` is deprecated. Please use `include` instead"
10+
end
11+
12+
total = if omit
13+
self.in(include).not_in(omit).count
14+
else
15+
self.in(include).count
16+
end
17+
718
pages = (total / batch_size.to_f).ceil
19+
820
1.upto(pages) do |page|
921
sleep(sleep)
10-
output.concat self.in(options).per(batch_size).page(page)
22+
23+
if omit
24+
output.concat(self.in(include).not_in(omit).per(batch_size).page(page))
25+
else
26+
output.concat(self.in(include).per(batch_size).page(page))
27+
end
1128
end
1229

1330
output
1431
end
1532

16-
def where_batches(batch_size: 200, options: {}, sleep: 0)
33+
def where_batches(batch_size: 200, options: {}, include: {}, omit: nil, sleep: 0)
1734
output = []
18-
total = where(options).count
35+
36+
if options.present?
37+
include = options
38+
warn "Using `options` is deprecated. Please use `include` instead"
39+
end
40+
41+
total = if omit
42+
where(include).not(omit).count
43+
else
44+
where(include).count
45+
end
46+
1947
pages = (total / batch_size.to_f).ceil
48+
2049
1.upto(pages) do |page|
2150
sleep(sleep)
22-
output.concat where(options).per(batch_size).page(page)
51+
52+
if omit
53+
output.concat(where(include).not(omit).per(batch_size).page(page))
54+
else
55+
output.concat(where(include).per(batch_size).page(page))
56+
end
2357
end
2458

2559
output

0 commit comments

Comments
 (0)