$backup->id, 'name' => Str::of($backup->database->name)->slug().'-'.now()->format('YmdHis'), 'status' => BackupFileStatus::CREATING, ]); $file->save(); dispatch(function () use ($file, $backup): void { /** @var Service $service */ $service = $backup->server->database(); /** @var Database $databaseHandler */ $databaseHandler = $service->handler(); $databaseHandler->runBackup($file); $file->status = BackupFileStatus::CREATED; $file->save(); if ($backup->status !== BackupStatus::RUNNING) { $backup->status = BackupStatus::RUNNING; $backup->save(); } })->catch(function () use ($file, $backup): void { $backup->status = BackupStatus::FAILED; $backup->save(); $file->status = BackupFileStatus::FAILED; $file->save(); })->onConnection('ssh'); return $file; } }