1
0
Fork 1
mirror of https://github.com/pixelfed/pixelfed.git synced 2024-12-25 01:05:36 +00:00

Update AdminController, improve dashboard caching

This commit is contained in:
Daniel Supernault 2019-10-07 19:48:58 -06:00
parent 86bef313a5
commit 72db2b35b5
No known key found for this signature in database
GPG key ID: 0DEF1C662C9033F7

View file

@ -45,20 +45,21 @@ class AdminController extends Controller
public function home() public function home()
{ {
$data = Cache::remember('admin:dashboard:home:data', now()->addMinutes(15), function() { $day = config('database.default') == 'pgsql' ? 'DATE_PART(\'day\',' : 'day(';
$day = config('database.default') == 'pgsql' ? 'DATE_PART(\'day\',' : 'day(';
$recent = Cache::remember('admin:dashboard:home:data:15min', now()->addMinutes(15), function() use ($day) {
return [ return [
'contact' => [ 'contact' => [
'count' => PrettyNumber::convert(Contact::whereNull('read_at')->count()), 'count' => PrettyNumber::convert(Contact::whereNull('read_at')->count()),
'graph' => Contact::selectRaw('count(*) as count, '.$day.'created_at) as day')->whereNull('read_at')->whereBetween('created_at',[now()->subDays(14), now()])->groupBy('day')->orderBy('day')->pluck('count') 'graph' => Contact::selectRaw('count(*) as count, '.$day.'created_at) as d')->groupBy('d')->whereNull('read_at')->whereBetween('created_at',[now()->subDays(14), now()])->orderBy('d')->pluck('count')
], ],
'failedjobs' => [ 'failedjobs' => [
'count' => PrettyNumber::convert(FailedJob::where('failed_at', '>=', \Carbon\Carbon::now()->subDay())->count()), 'count' => PrettyNumber::convert(FailedJob::where('failed_at', '>=', \Carbon\Carbon::now()->subDay())->count()),
'graph' => FailedJob::selectRaw('count(*) as count, '.$day.'failed_at) as d')->groupBy('d')->whereBetween('failed_at',[now()->subDays(24), now()])->orderBy('d')->pluck('count') 'graph' => FailedJob::selectRaw('count(*) as count, '.$day.'failed_at) as d')->groupBy('d')->whereBetween('failed_at',[now()->subDays(14), now()])->orderBy('d')->pluck('count')
], ],
'reports' => [ 'reports' => [
'count' => PrettyNumber::convert(Report::whereNull('admin_seen')->count()), 'count' => PrettyNumber::convert(Report::whereNull('admin_seen')->count()),
'graph' => Report::selectRaw('count(*) as count, '.$day.'created_at) as day')->whereBetween('created_at',[now()->subDays(14), now()])->groupBy('day')->orderBy('day')->pluck('count') 'graph' => Report::selectRaw('count(*) as count, '.$day.'created_at) as d')->whereBetween('created_at',[now()->subDays(14), now()])->groupBy('d')->orderBy('d')->pluck('count')
], ],
'statuses' => [ 'statuses' => [
'count' => PrettyNumber::convert(Status::whereNull('in_reply_to_id')->whereNull('reblog_of_id')->count()), 'count' => PrettyNumber::convert(Status::whereNull('in_reply_to_id')->whereNull('reblog_of_id')->count()),
@ -80,6 +81,11 @@ class AdminController extends Controller
'count' => PrettyNumber::convert(Profile::count()), 'count' => PrettyNumber::convert(Profile::count()),
'graph' => Profile::selectRaw('count(*) as count, '.$day.'created_at) as day')->whereBetween('created_at',[now()->subDays(14), now()])->groupBy('day')->orderBy('day')->pluck('count') 'graph' => Profile::selectRaw('count(*) as count, '.$day.'created_at) as day')->whereBetween('created_at',[now()->subDays(14), now()])->groupBy('day')->orderBy('day')->pluck('count')
], ],
];
});
$longer = Cache::remember('admin:dashboard:home:data:24hr', now()->addHours(24), function() use ($day) {
return [
'users' => [ 'users' => [
'count' => PrettyNumber::convert(User::count()), 'count' => PrettyNumber::convert(User::count()),
'graph' => User::selectRaw('count(*) as count, '.$day.'created_at) as day')->whereBetween('created_at',[now()->subDays(14), now()])->groupBy('day')->orderBy('day')->pluck('count') 'graph' => User::selectRaw('count(*) as count, '.$day.'created_at) as day')->whereBetween('created_at',[now()->subDays(14), now()])->groupBy('day')->orderBy('day')->pluck('count')
@ -98,6 +104,8 @@ class AdminController extends Controller
] ]
]; ];
}); });
$data = array_merge($recent, $longer);
return view('admin.home', compact('data')); return view('admin.home', compact('data'));
} }