Improvements for eager loading (#3290)

* Working on invoice designs

* Working on Invoice Designs

* Improve eager loads

* Improvements for eager loading
This commit is contained in:
David Bomba 2020-02-06 23:00:22 +11:00 committed by GitHub
parent 4f82f1b903
commit f519fc765b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 79 additions and 62 deletions

View File

@ -67,53 +67,14 @@ class BaseController extends Controller
{ {
$include = ''; $include = '';
if (request()->has('first_load') && request()->input('first_load') == 'true') { if(request()->has('first_load') && request()->input('first_load') == 'true') {
$include = $this->getRequestIncludes([]);
/* For very large accounts, we reduce the includes automatically */
if (auth()->user()->getCompany()->clients->count() < 1000) {
$include = [
'account',
'user.company_user',
'token',
'company.activities',
'company.users.company_user',
'company.tax_rates',
'company.groups',
'company.company_gateways.gateway',
'company.clients',
'company.products',
'company.invoices',
//'company.payments',
'company.payments.paymentables',
'company.quotes',
'company.vendors',
'company.expenses',
'company.tasks',
'company.projects',
];
} else {
$include = [
'account',
'user.company_user',
'token',
'company.activities',
'company.users.company_user',
'company.tax_rates',
'company.groups',
// 'company.company_gateways.gateway',
// 'company.clients',
// 'company.products',
// 'company.invoices',
// 'company.payments',
// 'company.payments.paymentables',
// 'company.quotes',
];
}
$include = array_merge($this->forced_includes, $include); $include = array_merge($this->forced_includes, $include);
$include = implode(",", $include); $include = implode(",", $include);
} elseif (request()->input('include') !== null) { }
else if (request()->input('include') !== null) {
$request_include = explode(",", request()->input('include')); $request_include = explode(",", request()->input('include'));
$include = array_merge($this->forced_includes, $request_include); $include = array_merge($this->forced_includes, $request_include);
@ -284,8 +245,60 @@ class BaseController extends Controller
]; ];
} }
protected function getRequestIncludes($data) protected function getRequestIncludes($data)
{ {
$first_load = [
'account',
'user.company_user',
'token',
'company.activities',
'company.users.company_user',
'company.tax_rates',
'company.groups',
'company.company_gateways.gateway',
'company.clients.contacts',
'company.products',
'company.invoices',
'company.payments.paymentables',
'company.quotes',
'company.vendors.contacts',
'company.expenses',
'company.tasks',
'company.projects',
];
$mini_load = [
'account',
'user.company_user',
'token',
'company.activities',
'company.users.company_user',
'company.tax_rates',
'company.groups',
];
if (request()->has('first_load') && request()->input('first_load') == 'true')
{
if (auth()->user()->getCompany()->clients->count() > 1000)
{
$data = $mini_load;
}
else
{
$data = $first_load;
}
}
else
{
$included = request()->input('include'); $included = request()->input('include');
$included = explode(',', $included); $included = explode(',', $included);
@ -297,6 +310,9 @@ class BaseController extends Controller
} }
} }
}
return $data; return $data;
} }
} }

View File

@ -49,8 +49,9 @@ class QueryLogging
$time = $timeEnd - $timeStart; $time = $timeEnd - $timeStart;
Log::info($request->method() . ' - ' . $request->url() . ": $count queries - " . $time); Log::info($request->method() . ' - ' . $request->url() . ": $count queries - " . $time);
if($count > 50) // if($count > 50)
Log::info($queries); // Log::info($queries);
} }
} }

View File

@ -95,7 +95,7 @@ class Client extends BaseModel
//'currency', //'currency',
// 'primary_contact', // 'primary_contact',
// 'country', // 'country',
'contacts', // 'contacts',
// 'shipping_country', // 'shipping_country',
// 'company', // 'company',
]; ];

View File

@ -54,7 +54,7 @@ class Vendor extends BaseModel
]; ];
protected $with = [ protected $with = [
'contacts', // 'contacts',
]; ];
public function documents() public function documents()

View File

@ -113,7 +113,7 @@ class ClientTransformer extends EntityTransformer
'id_number' => $client->id_number ?: '', 'id_number' => $client->id_number ?: '',
'updated_at' => (int)$client->updated_at, 'updated_at' => (int)$client->updated_at,
'archived_at' => (int)$client->deleted_at, 'archived_at' => (int)$client->deleted_at,
'display_name' => $client->present()->name() //'display_name' => $client->present()->name()
]; ];
} }
} }