1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- # frozen_string_literal: true
- class BenchmarksController < ApplicationController
- ALL_DB_IDS = (1..10_000).to_a
- FORTUNES_TEMPLATE = ERB.new(Rage.root.join("app/views/fortunes.html.erb").read)
- before_action do
- headers["server"] = "rage"
- end
- def json
- render json: { message: "Hello, World!" }
- end
- def plaintext
- render plain: "Hello, World!"
- end
- def db
- render json: World.find(random_id)
- end
- def queries
- records = requested_ids.map do |id|
- World.find(id)
- end
- render json: records
- end
- def fortunes
- records = Fortune.pluck(:id, :message).map! { |id, message| { id:, message: } }
- records << Fortune.new(id: 0, message: "Additional fortune added at request time.")
- records.sort_by! { |record| record[:message] }
- render plain: FORTUNES_TEMPLATE.result(binding)
- headers["content-type"] = "text/html; charset=utf-8"
- end
- def updates
- records = requested_ids.map do |id|
- World.find(id)
- end
- updates = records.map do |record|
- new_value = random_id
- new_value = random_id until new_value != record.randomNumber
- record.randomNumber = new_value
- { id: record.id, randomnumber: new_value }
- end
- World.upsert_all(updates.sort_by! { |u| u[:id] })
- render json: records
- end
- private
- def requested_ids
- num = params[:queries].to_i
- if num > 500
- num = 500
- elsif num < 1
- num = 1
- end
- ALL_DB_IDS.sample(num)
- end
- def random_id
- Random.rand(9_999) + 1
- end
- end
|