for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace PavelMironchik\LaravelBackupPanel\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use Spatie\Backup\Helpers\Format;
use Spatie\Backup\Tasks\Monitor\BackupDestinationStatus;
use Spatie\Backup\Tasks\Monitor\BackupDestinationStatusFactory;
class BackupStatusesController extends Controller
{
public function __invoke(Request $request)
return Cache::remember('backup-statuses', now()->addSeconds(4), function () {
return BackupDestinationStatusFactory::createForMonitorConfig(config('backup.monitor_backups'))
->map(function (BackupDestinationStatus $backupDestinationStatus) {
return [
'name' => $backupDestinationStatus->backupDestination()->backupName(),
'disk' => $backupDestinationStatus->backupDestination()->diskName(),
'reachable' => $backupDestinationStatus->backupDestination()->isReachable(),
'healthy' => $backupDestinationStatus->isHealthy(),
'amount' => $backupDestinationStatus->backupDestination()->backups()->count(),
'newest' => $backupDestinationStatus->backupDestination()->newestBackup()
? $backupDestinationStatus->backupDestination()->newestBackup()->date()->diffForHumans()
: 'No backups present',
'usedStorage' => Format::humanReadableSize($backupDestinationStatus->backupDestination()->usedStorage()),
];
})
->values()
->toArray();
});
}