diff options
author | Matthew Somerville <matthew-github@dracos.co.uk> | 2017-08-18 21:12:15 +0100 |
---|---|---|
committer | Matthew Somerville <matthew-github@dracos.co.uk> | 2017-08-23 14:01:10 +0100 |
commit | 2b4ed83466ddf54f6d7e77088dc7e755f9259e91 (patch) | |
tree | 7320bb3b114c553c4aca398189e72a5efc84125c /perllib/FixMyStreet/DB/Result/Problem.pm | |
parent | bbe8fb87daab16ca285521658bec1dcb2fbdf4d1 (diff) |
Use a schema cache to remember body lookups.
Diffstat (limited to 'perllib/FixMyStreet/DB/Result/Problem.pm')
-rw-r--r-- | perllib/FixMyStreet/DB/Result/Problem.pm | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/perllib/FixMyStreet/DB/Result/Problem.pm b/perllib/FixMyStreet/DB/Result/Problem.pm index 19e76f6ed..0d1b396a9 100644 --- a/perllib/FixMyStreet/DB/Result/Problem.pm +++ b/perllib/FixMyStreet/DB/Result/Problem.pm @@ -508,12 +508,16 @@ has bodies => ( default => sub { my $self = shift; return {} unless $self->bodies_str; + my $cache = $self->result_source->schema->cache; + return $cache->{bodies}{$self->bodies_str} if $cache->{bodies}{$self->bodies_str}; + my $bodies = $self->bodies_str_ids; my @bodies = $self->result_source->schema->resultset('Body')->search( { id => $bodies }, { prefetch => 'body_areas' }, )->all; - return { map { $_->id => $_ } @bodies }; + $cache->{bodies}{$self->bodies_str} = { map { $_->id => $_ } @bodies }; + return $cache->{bodies}{$self->bodies_str}; }, ); |