Skip to content

Commit

Permalink
candidates をメモリに載せる 21250
Browse files Browse the repository at this point in the history
  • Loading branch information
mickamy committed Jan 2, 2024
1 parent 8a6b65f commit 4e0e4fe
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 22 deletions.
15 changes: 15 additions & 0 deletions note.md
Original file line number Diff line number Diff line change
Expand Up @@ -224,3 +224,18 @@ docker exec -i ishocon2-bench-1 sh -c "./benchmark --ip app:443 --workload 6"
2024/01/02 02:03:28 投票者の感心がなくなりました
2024/01/02 02:03:28 {"score": 24094, "success": 21822, "failure": 0}
```

- candidates をメモリに載せる 21250

```
❯ make bench
docker exec -i ishocon2-bench-1 sh -c "./benchmark --ip app:443 --workload 6"
2024/01/02 02:40:03 Start GET /initialize
2024/01/02 02:40:03 期日前投票を開始します
2024/01/02 02:40:04 期日前投票が終了しました
2024/01/02 02:40:04 投票を開始します Workload: 6
2024/01/02 02:40:51 投票が終了しました
2024/01/02 02:40:51 投票者が結果を確認しています
2024/01/02 02:41:06 投票者の感心がなくなりました
2024/01/02 02:41:06 {"score": 21250, "success": 19650, "failure": 0}
```
47 changes: 25 additions & 22 deletions webapp/ruby/app.rb
Original file line number Diff line number Diff line change
Expand Up @@ -43,16 +43,16 @@ def db
client
end

# def candidates
# @candidates ||= db.query('SELECT * FROM candidates').map do |row|
# {
# id: row[:id],
# name: row[:name],
# political_party: row[:political_party],
# sex: row[:sex],
# }
# end
# end
def candidates
@candidates ||= db.query('SELECT * FROM candidates').map do |row|
{
id: row[:id],
name: row[:name],
political_party: row[:political_party],
sex: row[:sex],
}
end
end

def election_results
query = <<SQL
Expand Down Expand Up @@ -93,10 +93,12 @@ def db_initialize
cs.push(r) if i < 10 || 28 < i
end

# parties_set = cs.map { |c| c[:political_party] }.uniq
parties_set = db.query('SELECT political_party FROM candidates GROUP BY political_party')
parties_set = cs.map { |c| c[:political_party] }.uniq
# parties_set = db.query('SELECT political_party FROM candidates GROUP BY political_party')
parties = {}
parties_set.each { |a| parties[a[:political_party]] = 0 }
parties_set.each do |party|
parties[party] = 0
end
election_results.each do |r|
parties[r[:political_party]] += r[:count] || 0
end
Expand All @@ -112,8 +114,8 @@ def db_initialize
end

get '/candidates/:id' do
candidate = db.xquery('SELECT * FROM candidates WHERE id = ?', params[:id]).first
# candidate = candidates.first { |c| c[:id] == param[:id] }
# candidate = db.xquery('SELECT * FROM candidates WHERE id = ?', params[:id]).first
candidate = candidates.find { |c| c[:id] == params[:id] }
return redirect '/' if candidate.nil?
votes = db.xquery('SELECT COUNT(*) AS count FROM votes WHERE candidate_id = ?', params[:id]).first[:count]
keywords = voice_of_supporter([params[:id]])
Expand All @@ -127,17 +129,18 @@ def db_initialize
election_results.each do |r|
votes += r[:count] || 0 if r[:political_party] == params[:name]
end
candidates = db.xquery('SELECT * FROM candidates WHERE political_party = ?', params[:name])
candidate_ids = candidates.map { |c| c[:id] }
# candidates = db.xquery('SELECT * FROM candidates WHERE political_party = ?', params[:name])
cs = candidates.select { |c| c[:political_party] == params[:name] }
candidate_ids = cs.map { |c| c[:id] }
keywords = voice_of_supporter(candidate_ids)
erb :political_party, locals: { political_party: params[:name],
votes: votes,
candidates: candidates,
candidates: cs,
keywords: keywords }
end

get '/vote' do
candidates = db.query('SELECT * FROM candidates')
# candidates = db.query('SELECT * FROM candidates')
erb :vote, locals: { candidates: candidates, message: '' }
end

Expand All @@ -146,12 +149,12 @@ def db_initialize
params[:name],
params[:address],
params[:mynumber]).first
candidate = db.xquery('SELECT * FROM candidates WHERE name = ?', params[:candidate]).first
# candidate = candidates.first { |c| c[:name] == params[:candidate] }
# candidate = db.xquery('SELECT * FROM candidates WHERE name = ?', params[:candidate]).first
candidate = candidates.find { |c| c[:name] == params[:candidate] }
voted_count =
user.nil? ? 0 : db.xquery('SELECT COUNT(*) AS count FROM votes WHERE user_id = ?', user[:id]).first[:count]

candidates = db.query('SELECT * FROM candidates')
# candidates = db.query('SELECT * FROM candidates')
cs = candidates
if user.nil?
return erb :vote, locals: { candidates: cs, message: '個人情報に誤りがあります' }
Expand Down

0 comments on commit 4e0e4fe

Please sign in to comment.