diff options
-rw-r--r-- | app/controllers/api_controller.rb | 35 | ||||
-rw-r--r-- | db/migrate/20140801132719_add_index_to_info_request_events.rb | 5 |
2 files changed, 16 insertions, 24 deletions
diff --git a/app/controllers/api_controller.rb b/app/controllers/api_controller.rb index 837364b19..4473139d1 100644 --- a/app/controllers/api_controller.rb +++ b/app/controllers/api_controller.rb @@ -191,19 +191,10 @@ class ApiController < ApplicationController raise PermissionDenied.new("#{@public_body.id} != #{params[:id]}") if @public_body.id != params[:id].to_i since_date_str = params[:since_date] + event_type_clause = "event_type in ('sent', 'followup_sent', 'resent', 'followup_resent')" if since_date_str.nil? - @events = InfoRequestEvent.find_by_sql([ - %(select info_request_events.* - from info_requests - join info_request_events on info_requests.id = info_request_events.info_request_id - where info_requests.public_body_id = ? - and info_request_events.event_type in ( - 'sent', 'followup_sent', 'resent', 'followup_resent' - ) - order by info_request_events.created_at desc - ), @public_body.id - ]) - else + where_params = event_type_clause + else begin since_date = Date.strptime(since_date_str, "%Y-%m-%d") rescue ArgumentError @@ -212,19 +203,15 @@ class ApiController < ApplicationController :status => 500 return end - @events = InfoRequestEvent.find_by_sql([ - %(select info_request_events.* - from info_requests - join info_request_events on info_requests.id = info_request_events.info_request_id - where info_requests.public_body_id = ? - and info_request_events.event_type in ( - 'sent', 'followup_sent', 'resent', 'followup_resent' - ) - and info_request_events.created_at >= ? - order by info_request_events.created_at desc - ), @public_body.id, since_date - ]) + event_type_clause << " AND info_request_events.created_at >= ?" + where_params = [event_type_clause, since_date] end + @events = InfoRequestEvent.where(where_params) \ + .joins(:info_request) \ + .where("public_body_id = ?", @public_body.id) \ + .includes([{:info_request => :user}, :outgoing_message]) \ + .order('info_request_events.created_at DESC') + if feed_type == "atom" render :template => "api/request_events", :formats => ['atom'], :layout => false elsif feed_type == "json" diff --git a/db/migrate/20140801132719_add_index_to_info_request_events.rb b/db/migrate/20140801132719_add_index_to_info_request_events.rb new file mode 100644 index 000000000..5f0a77eac --- /dev/null +++ b/db/migrate/20140801132719_add_index_to_info_request_events.rb @@ -0,0 +1,5 @@ +class AddIndexToInfoRequestEvents < ActiveRecord::Migration + def change + add_index :info_request_events, :event_type + end +end |