diff --git a/lib/proposals_discussion_plugin/api.rb b/lib/proposals_discussion_plugin/api.rb index aabb556..476b728 100644 --- a/lib/proposals_discussion_plugin/api.rb +++ b/lib/proposals_discussion_plugin/api.rb @@ -4,15 +4,16 @@ class ProposalsDiscussionPlugin::API < Grape::API get ':id/ranking' do article = find_article(environment.articles, params[:id]) - proposals = article.proposals.map do |proposal| - effective_support = (proposal.votes_for - proposal.votes_against)/proposal.hits.to_f - effective_participation = (proposal.votes_for + proposal.votes_against)/proposal.hits.to_f + Rails.cache.fetch("#{article.cache_key}/proposals_ranking", expires_in: 1.hours) do + proposals = article.proposals.map do |proposal| + effective_support = (proposal.votes_for - proposal.votes_against)/proposal.hits.to_f + effective_participation = (proposal.votes_for + proposal.votes_against)/proposal.hits.to_f - {:id => proposal.id, :abstract => proposal.abstract, :votes_for => proposal.votes_for, :votes_against => proposal.votes_against, :hits => proposal.hits, :effective_support => effective_support, :effective_participation => effective_participation} + {:id => proposal.id, :abstract => proposal.abstract, :votes_for => proposal.votes_for, :votes_against => proposal.votes_against, :hits => proposal.hits, :effective_support => effective_support, :effective_participation => effective_participation} + end + proposals = proposals.sort_by { |p| p[:effective_support] }.reverse + {:proposals => proposals, :updated_at => DateTime.now} end - - proposals = proposals.sort_by { |p| p[:effective_support] }.reverse - {:proposals => proposals, :updated_at => DateTime.now} end end -- libgit2 0.21.2