Hopefully fix speed issue on external data

This commit is contained in:
Thomas Bloor 2019-09-09 15:37:26 +01:00
parent c65745f6a2
commit e8c45d75c4
19 changed files with 182 additions and 156 deletions

View file

@ -98,4 +98,24 @@ sub post_transactions {
return $c->redirect_to('/admin/import_from');
}
sub org_search {
my $c = shift;
my $term = $c->param('term');
my $rs = $c->schema->resultset('Organisation')->search(
{ name => { like => $term . '%' } },
{
join => 'entity',
columns => [ qw/ me.name entity.id / ]
},
);
my @results = ( map { {
label => $_->name,
value => $_->entity->id,
} } $rs->all);
$c->render( json => \@results );
}
1;

View file

@ -17,15 +17,10 @@ sub index {
my $week_transaction_rs = $c->schema->resultset('ViewQuantisedTransaction' . $driver)->search(
{},
{
columns => [
{
quantised => 'quantised_weeks',
count => \"COUNT(*)",
sum_value => $c->pg_or_sqlite(
'SUM("me"."value")',
'SUM("me"."value")',
),
}
select => [
{ count => 'id', '-as' => 'count' },
{ sum => 'value', '-as' => 'sum_value' },
'quantised_weeks',
],
group_by => 'quantised_weeks',
order_by => { '-asc' => 'quantised_weeks' },
@ -33,8 +28,8 @@ sub index {
);
my @all_weeks = $week_transaction_rs->all;
my $first_week_count = $all_weeks[0]->get_column('count') || 0;
my $first_week_value = $all_weeks[0]->get_column('sum_value') / 100000 || 0;
my $first_week_count = defined $all_weeks[0] ? $all_weeks[0]->get_column('count') || 0 : 0;
my $first_week_value = defined $all_weeks[0] ? $all_weeks[0]->get_column('sum_value') / 100000 || 0 : 0;
my $second_week_count = defined $all_weeks[1] ? $all_weeks[1]->get_column('count') || 0 : 0;
my $second_week_value = defined $all_weeks[1] ? $all_weeks[1]->get_column('sum_value') / 100000 || 0 : 0;

View file

@ -199,40 +199,24 @@ sub post_supplier_count {
buyer_id => $user->entity->id,
},
{
columns => [
'seller_id',
{
quantised => 'quantised_days',
count => \"COUNT(*)",
total_spend => { sum => 'value' },
}
prefetch => { 'seller' => 'organisation' },
select => [
{ count => 'me.id', '-as' => 'count' },
{ sum => 'me.value', '-as' => 'total_spend' },
'organisation.name',
'me.quantised_days',
],
group_by => [ 'quantised_days', 'seller_id' ],
order_by => { '-asc' => 'quantised_days' },
group_by => [ 'me.quantised_days', 'seller.id' ],
order_by => { '-asc' => 'me.quantised_days' },
}
);
my $name_rs = $c->schema->resultset('Transaction')->search(
{
'me.buyer_id' => $user->entity->id,
},
{
join => { seller => 'organisation' },
}
);
my %name_map = (
map {
$_->seller->id => $_->seller->organisation->name,
} $name_rs->all
);
my @graph_data = (
map {{
count => $_->get_column('count'),
value => ($_->get_column('total_spend') / 100000) // 0,
date => $_->get_column('quantised'),
seller => $name_map{ $_->get_column('seller_id') },
date => $_->get_column('quantised_days'),
seller => $_->seller->organisation->name,
}} $spend_rs->all,
);