Added methods to generate a backup in CSV

This commit is contained in:
Henry Whitaker
2020-06-10 12:44:08 +01:00
parent a5e54d9462
commit e651fd579d
2 changed files with 43 additions and 10 deletions

View File

@@ -3,14 +3,43 @@
namespace App\Helpers;
use App\Speedtest;
use DateTime;
use Exception;
use Illuminate\Support\Facades\Storage;
class BackupHelper {
public static function backup()
public static function backup($format = 'json')
{
$data = Speedtest::get();
$timestamp = new DateTime();
$timestamp = $timestamp->format('Y-m-d_H:i:s');
$name = 'speedtest_backup_' . $timestamp;
return $data;
switch($format) {
case 'csv':
$data = Speedtest::get();
$csv = Storage::disk('local')->getDriver()->getAdapter()->getPathPrefix() . $name . '.csv';
$name = $name . '.csv';
$handle = fopen($csv, 'w+');
fputcsv($handle, array('id', 'ping', 'download', 'upload', 'created_at', 'updated_at'));
foreach($data as $d) {
fputcsv($handle, array($d->id, $d->ping, $d->download, $d->upload, $d->created_at, $d->updated_at));
}
fclose($handle);
break;
case 'json':
default:
$data = Speedtest::get()->toJson();
$name = $name . '.json';
Storage::disk('local')->put($name, $data);
break;
}
return $name;
}
public static function restore($array)

View File

@@ -10,15 +10,19 @@ use Illuminate\Support\Facades\Validator;
class BackupController extends Controller
{
public function backup()
public function backup(Request $request)
{
$data = BackupHelper::backup();
$timestamp = new DateTime();
$timestamp = $timestamp->format('Y-m-d_H:i:s');
$name = 'speedtest_backup_' . $timestamp . '.json';
Storage::disk('local')->put($name, $data);
$validator = Validator::make($request->all(), [ 'format' => 'in:json,csv' ]);
if($validator->fails()) {
return response()->json([
'method' => 'backup data',
'error' => $validator->errors(),
], 422);
}
return Storage::disk('local')->download($name);
$filename = BackupHelper::backup($request->format);
return Storage::disk('local')->download($filename);
}
public function restore(Request $request)