mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-06-05 03:34:36 -04:00
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:
parent
4f82f1b903
commit
f519fc765b
@ -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;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,7 +95,7 @@ class Client extends BaseModel
|
|||||||
//'currency',
|
//'currency',
|
||||||
// 'primary_contact',
|
// 'primary_contact',
|
||||||
// 'country',
|
// 'country',
|
||||||
'contacts',
|
// 'contacts',
|
||||||
// 'shipping_country',
|
// 'shipping_country',
|
||||||
// 'company',
|
// 'company',
|
||||||
];
|
];
|
||||||
|
@ -54,7 +54,7 @@ class Vendor extends BaseModel
|
|||||||
];
|
];
|
||||||
|
|
||||||
protected $with = [
|
protected $with = [
|
||||||
'contacts',
|
// 'contacts',
|
||||||
];
|
];
|
||||||
|
|
||||||
public function documents()
|
public function documents()
|
||||||
|
@ -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()
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user