15
15
} )
16
16
end
17
17
18
- MAX_PK = 10_000
18
+ QUERY_RANGE = ( 1 ..10_000 ) . freeze
19
+ ALL_IDS = QUERY_RANGE . to_a
19
20
QUERIES_MIN = 1
20
21
QUERIES_MAX = 500
21
22
@@ -27,7 +28,7 @@ def self.extract_queries_param(request = nil)
27
28
end
28
29
29
30
def self . get_one_random_number
30
- 1 + Random . rand ( MAX_PK )
31
+ Random . rand ( QUERY_RANGE )
31
32
end
32
33
33
34
def self . get_one_record ( id = get_one_random_number )
@@ -141,33 +142,29 @@ def self.call(_req)
141
142
142
143
class QueriesHandler < BaseHandler
143
144
def self . call ( req )
144
- records =
145
- [ ] . tap do |r |
146
- ( extract_queries_param req ) . times do
147
- r << get_one_record ( )
148
- end
149
- end
145
+ queries = extract_queries_param req
146
+ records = ALL_IDS . sample ( queries ) . map do |id |
147
+ get_one_record ( id )
148
+ end
150
149
151
150
json_response ( records )
152
151
end
153
152
end
154
153
155
154
class UpdatesHandler < BaseHandler
156
155
def self . call ( req )
157
- records =
158
- [ ] . tap do |r |
159
- ( extract_queries_param req ) . times do
160
- r << get_one_record ( )
161
- end
162
- end
163
-
164
- updated_records =
165
- records . map { |r | r [ 'randomnumber' ] = get_one_random_number ; r }
156
+ queries = extract_queries_param req
157
+ records = ALL_IDS . sample ( queries ) . map do |id |
158
+ world = get_one_record ( id )
159
+ world [ 'randomnumber' ] = get_one_random_number
160
+ world
161
+ end
166
162
167
163
sql_values =
168
- updated_records .
169
- map { |r | "(#{ r [ 'id' ] } , #{ r [ 'randomnumber' ] } )" } .
170
- join ( ', ' )
164
+ records .
165
+ map { |r |
166
+ "(#{ r [ 'id' ] } , #{ r [ 'randomnumber' ] } )"
167
+ } . join ( ', ' )
171
168
172
169
$pool. with do |conn |
173
170
conn . exec ( <<-SQL )
@@ -180,7 +177,7 @@ def self.call(req)
180
177
SQL
181
178
end
182
179
183
- json_response ( updated_records )
180
+ json_response ( records )
184
181
end
185
182
end
186
183
0 commit comments