diff options
author | Matthew Somerville <matthew@mysociety.org> | 2020-04-28 15:39:11 +0100 |
---|---|---|
committer | Matthew Somerville <matthew@mysociety.org> | 2020-04-28 16:44:02 +0100 |
commit | e1605415077d30c1d5f86017486e74ebc498063a (patch) | |
tree | 6d24b6074f4ee40df0edb4530bc6ce404eb212d9 /perllib/FixMyStreet | |
parent | a0d40e1a354cfd6c53e97a5fc72001091d33a04f (diff) |
Only request needed join data in places.
The export flow and the admin search request more data
from the database than they need, which slows it down.
Diffstat (limited to 'perllib/FixMyStreet')
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Admin/Reports.pm | 8 | ||||
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Dashboard.pm | 3 | ||||
-rw-r--r-- | perllib/FixMyStreet/Cobrand/BathNES.pm | 4 | ||||
-rw-r--r-- | perllib/FixMyStreet/Cobrand/TfL.pm | 7 |
4 files changed, 15 insertions, 7 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Admin/Reports.pm b/perllib/FixMyStreet/App/Controller/Admin/Reports.pm index ef9736ff6..7300fe676 100644 --- a/perllib/FixMyStreet/App/Controller/Admin/Reports.pm +++ b/perllib/FixMyStreet/App/Controller/Admin/Reports.pm @@ -108,7 +108,8 @@ sub index : Path { my $problems = $c->cobrand->problems->search( $query, { - prefetch => 'user', + join => 'user', + '+columns' => 'user.email', rows => 50, order_by => $order, } @@ -150,8 +151,9 @@ sub index : Path { -or => $query, }, { - -select => [ 'me.*', qw/problem.bodies_str problem.state/ ], - prefetch => [qw/user problem/], + '+columns' => ['user.email'], + join => 'user', + prefetch => [qw/problem/], rows => 50, order_by => { -desc => 'me.id' } } diff --git a/perllib/FixMyStreet/App/Controller/Dashboard.pm b/perllib/FixMyStreet/App/Controller/Dashboard.pm index 27c8630f0..ad6c9ba98 100644 --- a/perllib/FixMyStreet/App/Controller/Dashboard.pm +++ b/perllib/FixMyStreet/App/Controller/Dashboard.pm @@ -349,7 +349,8 @@ sub export_as_csv : Private { my $csv = $c->stash->{csv} = { objects => $c->stash->{objects_rs}->search_rs({}, { - prefetch => 'comments', + join => 'comments', + '+columns' => ['comments.problem_state', 'comments.state', 'comments.confirmed', 'comments.mark_fixed'], order_by => ['me.confirmed', 'me.id'], cursor_page_size => 1000, }), diff --git a/perllib/FixMyStreet/Cobrand/BathNES.pm b/perllib/FixMyStreet/Cobrand/BathNES.pm index 6a4f1c00b..06095734b 100644 --- a/perllib/FixMyStreet/Cobrand/BathNES.pm +++ b/perllib/FixMyStreet/Cobrand/BathNES.pm @@ -194,7 +194,7 @@ sub dashboard_export_updates_add_columns { $c->stash->{csv}->{objects} = $c->stash->{csv}->{objects}->search(undef, { '+columns' => ['user.email'], - prefetch => 'user', + join => 'user', }); my $user_lookup = $self->_dashboard_user_lookup; @@ -237,7 +237,7 @@ sub dashboard_export_problems_add_columns { $c->stash->{csv}->{objects} = $c->stash->{csv}->{objects}->search(undef, { '+columns' => ['user.email', 'user.phone'], - prefetch => 'user', + join => 'user', }); my $user_lookup = $self->_dashboard_user_lookup; diff --git a/perllib/FixMyStreet/Cobrand/TfL.pm b/perllib/FixMyStreet/Cobrand/TfL.pm index 8e133fa58..b98ad1d8b 100644 --- a/perllib/FixMyStreet/Cobrand/TfL.pm +++ b/perllib/FixMyStreet/Cobrand/TfL.pm @@ -293,7 +293,12 @@ sub dashboard_export_problems_add_columns { my $change = $report->admin_log_entries->search( { action => 'category_change' }, - { prefetch => 'user', rows => 1, order_by => { -desc => 'me.id' } } + { + join => 'user', + '+columns' => ['user.name'], + rows => 1, + order_by => { -desc => 'me.id' } + } )->single; my $reassigned_at = $change ? $change->whenedited : ''; my $reassigned_by = $change ? $change->user->name : ''; |