Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 1 addition & 6 deletions frameworks/Ruby/rack-sequel/boot.rb
Original file line number Diff line number Diff line change
Expand Up @@ -41,16 +41,11 @@ def connect(dbtype)

# Define ORM models
class World < Sequel::Model(:World)
BY_ID = naked.where(id: :$id).prepare(:first, :world_by_id)
UPDATE = where(id: :$id).prepare(:update, :world_update, randomnumber: :$randomnumber)

def_column_alias(:randomnumber, :randomNumber) if DB.database_type == :mysql

def self.batch_update(worlds)
if DB.database_type == :mysql
worlds.each do |world|
UPDATE.(id: world[:id], randomnumber: world[:randomnumber])
end
worlds.map(&:save_changes)
else
ids = []
sql = String.new("UPDATE world SET randomnumber = CASE id ")
Expand Down
13 changes: 8 additions & 5 deletions frameworks/Ruby/rack-sequel/hello_world.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,14 @@ def rand1
end

def db
World::BY_ID.(id: rand1)
World.with_pk(rand1).values
end

def queries(env)
ids = ALL_IDS.sample(bounded_queries(env))
DB.synchronize do
ids.map do |id|
World::BY_ID.(id: id)
World.with_pk(id).values
end
end
end
Expand Down Expand Up @@ -84,17 +84,20 @@ def fortunes
end

def updates(env)
worlds = []
ids = ALL_IDS.sample(bounded_queries(env))
DB.synchronize do
worlds =
ids.map do |id|
world = World::BY_ID.(id: id)
world[:randomnumber] = rand1
world = World.with_pk(id)
new_value = rand1
new_value = rand1 while new_value == world.randomnumber
world.randomnumber = new_value
world
end
World.batch_update(worlds)
worlds
end
worlds.map!(&:values)
end

def call(env)
Expand Down
Loading