-
-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathsingle_case.rb
More file actions
34 lines (24 loc) · 706 Bytes
/
Copy pathsingle_case.rb
File metadata and controls
34 lines (24 loc) · 706 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
require 'n1_loader'
require_relative 'context/service'
# Loader that will be shared between multiple classes
class OptimizedLoader < N1Loader::Loader
def perform(objects)
data = Service.receive(objects)
objects.each_with_index do |user, index|
fulfill(user, data[index])
end
end
def single(object)
Service.single(object)
end
end
class User
include N1Loader::Loadable
n1_optimized :optimized_call, OptimizedLoader
end
objects = [User.new, User.new]
N1Loader::Preloader.new(objects).preload(:optimized_call)
objects.map(&:optimized_call)
p "Used multi-case perform: #{Service.count == 1}"
User.new.optimized_call
p "Used single-case perform: #{Service.count == 1}"