aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/api_controller.rb35
-rw-r--r--db/migrate/20140801132719_add_index_to_info_request_events.rb5
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