Hopefully fix speed issue on external data
This commit is contained in:
parent
3b8b5b97f4
commit
962cf972da
19 changed files with 182 additions and 156 deletions
|
@ -267,6 +267,7 @@ sub startup {
|
|||
$admin_routes->post('/import_from/suppliers')->to('admin-import_from#post_suppliers');
|
||||
$admin_routes->post('/import_from/transactions')->to('admin-import_from#post_transactions');
|
||||
$admin_routes->post('/import_from/postcodes')->to('admin-import_from#post_postcodes');
|
||||
$admin_routes->get('/import_from/org_search')->to('admin-import_from#org_search');
|
||||
|
||||
# my $user_routes = $r->under('/')->to('root#under');
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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,
|
||||
);
|
||||
|
||||
|
|
|
@ -22,4 +22,18 @@ SELECT "value",
|
|||
FROM "transactions"
|
||||
/);
|
||||
|
||||
__PACKAGE__->belongs_to(
|
||||
"buyer",
|
||||
"Pear::LocalLoop::Schema::Result::Entity",
|
||||
{ id => "buyer_id" },
|
||||
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
|
||||
);
|
||||
|
||||
__PACKAGE__->belongs_to(
|
||||
"seller",
|
||||
"Pear::LocalLoop::Schema::Result::Entity",
|
||||
{ id => "seller_id" },
|
||||
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
|
||||
);
|
||||
|
||||
1;
|
||||
|
|
Reference in a new issue