Skip to content

Commit

Permalink
refactor: Optimize CasaCasesController performance with eager loading…
Browse files Browse the repository at this point in the history
… and indexing
  • Loading branch information
compwron committed Jan 26, 2025
1 parent e83e849 commit f5277b9
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 8 deletions.
27 changes: 19 additions & 8 deletions app/controllers/casa_cases_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,10 @@ class CasaCasesController < ApplicationController

def index
authorize CasaCase
org_cases = current_user.casa_org.casa_cases.includes(:assigned_volunteers)
@casa_cases = policy_scope(org_cases).includes([:hearing_type, :judge])
org_cases = current_user.casa_org.casa_cases
.includes(:assigned_volunteers, :volunteer_assignments, :casa_org, :hearing_type, :judge)
.with_attached_court_reports
@casa_cases = policy_scope(org_cases)
@casa_cases_filter_id = policy(CasaCase).can_see_filters? ? "casa-cases" : ""
@duties = OtherDuty.where(creator_id: current_user.id)
end
Expand Down Expand Up @@ -131,10 +133,19 @@ def reactivate

def copy_court_orders
authorize @casa_case, :update_court_orders?
CasaCase.find_by_case_number(params[:case_number_cp]).case_court_orders.each do |court_order|
dup_court_order = court_order.dup
dup_court_order.save
@casa_case.case_court_orders.append dup_court_order
source_case = CasaCase.includes(:case_court_orders)
.find_by_case_number(params[:case_number_cp])

return unless source_case

CaseCourtOrder.transaction do
source_case.case_court_orders.each do |court_order|
@casa_case.case_court_orders.create!(
text: court_order.text,
implementation_status: court_order.implementation_status,
court_date_id: court_order.court_date_id
)
end
end
end

Expand Down Expand Up @@ -176,8 +187,8 @@ def casa_case_update_params
end

def set_contact_types
@contact_types = current_organization.contact_types
@selected_contact_type_ids = (!@casa_case.nil?) ? @casa_case.contact_type_ids : []
@contact_types = current_organization.contact_types.includes(:contact_type_group)
@selected_contact_type_ids = @casa_case&.contact_type_ids || []
end

def case_contact_csv_name(case_contacts)
Expand Down
3 changes: 3 additions & 0 deletions db/schema.rb
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,9 @@
t.index ["casa_org_id"], name: "index_casa_cases_on_casa_org_id"
t.index ["case_number", "casa_org_id"], name: "index_casa_cases_on_case_number_and_casa_org_id", unique: true
t.index ["slug"], name: "index_casa_cases_on_slug"
t.index ["active"], name: "index_casa_cases_on_active"
t.index ["court_report_due_date"], name: "index_casa_cases_on_court_report_due_date"
t.index ["court_report_status"], name: "index_casa_cases_on_court_report_status"
end

create_table "casa_cases_emancipation_options", force: :cascade do |t|
Expand Down

0 comments on commit f5277b9

Please sign in to comment.