read from the slave for some queries
* calendar events in the .ics feed * searching for users in an account * user's recent stream items test plan: verify that these functions still work, both with and without a slave db configured Change-Id: Ia596d388642cc9df16e471472406d447a5eb1cf0 Reviewed-on: https://gerrit.instructure.com/13025 Reviewed-by: Zach Wily <zach@instructure.com> Reviewed-by: Cody Cutrer <cody@instructure.com> Tested-by: Brian Palmer <brianp@instructure.com>
This commit is contained in:
parent
5600cbaa90
commit
2110996c16
|
@ -190,11 +190,13 @@ class CalendarsController < ApplicationController
|
|||
get_all_pertinent_contexts
|
||||
|
||||
@events = []
|
||||
@contexts.each do |context|
|
||||
@assignments = context.assignments.active.find(:all) if context.respond_to?("assignments")
|
||||
@events.concat context.calendar_events.active.find(:all)
|
||||
@events.concat @assignments || []
|
||||
@events = @events.sort_by{ |e| [(e.start_at || Time.now), e.title] }
|
||||
ActiveRecord::Base::ConnectionSpecification.with_environment(:slave) do
|
||||
@contexts.each do |context|
|
||||
@assignments = context.assignments.active.find(:all) if context.respond_to?("assignments")
|
||||
@events.concat context.calendar_events.active.find(:all)
|
||||
@events.concat @assignments || []
|
||||
@events = @events.sort_by{ |e| [(e.start_at || Time.now), e.title] }
|
||||
end
|
||||
end
|
||||
@contexts.each do |context|
|
||||
log_asset_access("calendar_feed:#{context.asset_string}", "calendar", 'other')
|
||||
|
|
|
@ -171,40 +171,42 @@ class UsersController < ApplicationController
|
|||
@root_account = @context.root_account
|
||||
@users = []
|
||||
@query = (params[:user] && params[:user][:name]) || params[:term]
|
||||
if @context && @context.is_a?(Account) && @query
|
||||
@users = @context.users_name_like(@query)
|
||||
elsif params[:enrollment_term_id].present? && @root_account == @context
|
||||
@users = @context.fast_all_users.scoped({
|
||||
:joins => :courses,
|
||||
:conditions => ["courses.enrollment_term_id = ?", params[:enrollment_term_id]],
|
||||
:group => @context.connection.group_by('users.id', 'users.name', 'users.sortable_name')
|
||||
})
|
||||
else
|
||||
@users = @context.fast_all_users
|
||||
end
|
||||
|
||||
@users = api_request? ?
|
||||
Api.paginate(@users, self, api_v1_account_users_path, :order => :sortable_name) :
|
||||
@users.paginate(:page => params[:page], :per_page => @per_page, :total_entries => @users.size)
|
||||
respond_to do |format|
|
||||
if @users.length == 1 && params[:term]
|
||||
format.html {
|
||||
redirect_to(named_context_url(@context, :context_user_url, @users.first))
|
||||
}
|
||||
ActiveRecord::Base::ConnectionSpecification.with_environment(:slave) do
|
||||
if @context && @context.is_a?(Account) && @query
|
||||
@users = @context.users_name_like(@query)
|
||||
elsif params[:enrollment_term_id].present? && @root_account == @context
|
||||
@users = @context.fast_all_users.scoped({
|
||||
:joins => :courses,
|
||||
:conditions => ["courses.enrollment_term_id = ?", params[:enrollment_term_id]],
|
||||
:group => @context.connection.group_by('users.id', 'users.name', 'users.sortable_name')
|
||||
})
|
||||
else
|
||||
@enrollment_terms = []
|
||||
if @root_account == @context
|
||||
@enrollment_terms = @context.enrollment_terms.active
|
||||
end
|
||||
format.html
|
||||
@users = @context.fast_all_users
|
||||
end
|
||||
|
||||
@users = api_request? ?
|
||||
Api.paginate(@users, self, api_v1_account_users_path, :order => :sortable_name) :
|
||||
@users.paginate(:page => params[:page], :per_page => @per_page, :total_entries => @users.size)
|
||||
respond_to do |format|
|
||||
if @users.length == 1 && params[:term]
|
||||
format.html {
|
||||
redirect_to(named_context_url(@context, :context_user_url, @users.first))
|
||||
}
|
||||
else
|
||||
@enrollment_terms = []
|
||||
if @root_account == @context
|
||||
@enrollment_terms = @context.enrollment_terms.active
|
||||
end
|
||||
format.html
|
||||
end
|
||||
format.json {
|
||||
cancel_cache_buster
|
||||
expires_in 30.minutes
|
||||
api_request? ?
|
||||
render(:json => @users.map { |u| user_json(u, @current_user, session) }) :
|
||||
render(:json => @users.map { |u| { :label => u.name, :id => u.id } })
|
||||
}
|
||||
end
|
||||
format.json {
|
||||
cancel_cache_buster
|
||||
expires_in 30.minutes
|
||||
api_request? ?
|
||||
render(:json => @users.map { |u| user_json(u, @current_user, session) }) :
|
||||
render(:json => @users.map { |u| { :label => u.name, :id => u.id } })
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1832,7 +1832,9 @@ class User < ActiveRecord::Base
|
|||
end
|
||||
|
||||
def recent_stream_items(opts={})
|
||||
visible_stream_item_instances(opts).scoped(:include => :stream_item, :limit => 21).map(&:stream_item).compact
|
||||
ActiveRecord::Base::ConnectionSpecification.with_environment(:slave) do
|
||||
visible_stream_item_instances(opts).scoped(:include => :stream_item, :limit => 21).map(&:stream_item).compact
|
||||
end
|
||||
end
|
||||
memoize :recent_stream_items
|
||||
|
||||
|
|
Loading…
Reference in New Issue