File tree Expand file tree Collapse file tree 2 files changed +23
-6
lines changed
frameworks/Ruby/roda-sequel Expand file tree Collapse file tree 2 files changed +23
-6
lines changed Original file line number Diff line number Diff line change @@ -73,6 +73,21 @@ def connect(dbtype)
73
73
# Define ORM models
74
74
class World < Sequel . Model ( :World )
75
75
def_column_alias ( :randomnumber , :randomNumber ) if DB . database_type == :mysql
76
+
77
+ def self . batch_update ( worlds )
78
+ if DB . database_type == :mysql
79
+ worlds . map ( &:save_changes )
80
+ else
81
+ ids = [ ]
82
+ sql = String . new ( "UPDATE world SET randomnumber = CASE id " )
83
+ worlds . each do |world |
84
+ sql << "when #{ world . id } then #{ world . randomnumber } "
85
+ ids << world . id
86
+ end
87
+ sql << "ELSE randomnumber END WHERE id IN ( #{ ids . join ( ',' ) } )"
88
+ DB . run ( sql )
89
+ end
90
+ end
76
91
end
77
92
78
93
class Fortune < Sequel . Model ( :Fortune )
Original file line number Diff line number Diff line change @@ -58,17 +58,19 @@ def rand1
58
58
# Test type 5: Database updates
59
59
r . is "updates" do
60
60
response [ CONTENT_TYPE ] = JSON_TYPE
61
- worlds =
62
- DB . synchronize do
61
+ worlds = [ ]
62
+ DB . synchronize do
63
+ worlds =
63
64
ALL_IDS . sample ( bounded_queries ) . map do |id |
64
65
world = World . with_pk ( id )
65
66
new_value = rand1
66
67
new_value = rand1 while new_value == world . randomnumber
67
- world . update ( randomnumber : new_value )
68
- world . values
68
+ world . randomnumber = new_value
69
+ world
69
70
end
70
- end
71
- worlds . to_json
71
+ World . batch_update ( worlds )
72
+ end
73
+ worlds . map ( &:values ) . to_json
72
74
end
73
75
74
76
# Test type 6: Plaintext
You can’t perform that action at this time.
0 commit comments