mirror of
https://github.com/PhyreApps/PhyrePanel.git
synced 2024-11-25 00:50:32 +00:00
update
This commit is contained in:
parent
2325192f78
commit
a346d35cf0
4 changed files with 52 additions and 6 deletions
|
@ -5,6 +5,8 @@ namespace App\Console\Commands;
|
||||||
use App\Models\Backup;
|
use App\Models\Backup;
|
||||||
use App\Models\HostingSubscription;
|
use App\Models\HostingSubscription;
|
||||||
use Illuminate\Console\Command;
|
use Illuminate\Console\Command;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
class RunBackup extends Command
|
class RunBackup extends Command
|
||||||
{
|
{
|
||||||
|
@ -33,10 +35,20 @@ class RunBackup extends Command
|
||||||
$backup->delete();
|
$backup->delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
$getBackups = Backup::where('backup_type', 'hosting_subscription')->get();
|
// Check for pending backups
|
||||||
if ($getBackups->count() > 0) {
|
$getPendingBackups = Backup::where('status', 'pending')
|
||||||
foreach ($getBackups as $backup) {
|
->get();
|
||||||
$status = $backup->startBackup();
|
if ($getPendingBackups->count() > 0) {
|
||||||
|
foreach ($getPendingBackups as $pendingBackup) {
|
||||||
|
$pendingBackup->startBackup();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check for running backups
|
||||||
|
$getRunningBackups = Backup::where('status', 'running')->get();
|
||||||
|
if ($getRunningBackups->count() > 0) {
|
||||||
|
foreach ($getRunningBackups as $runningBackup) {
|
||||||
|
$runningBackup->checkBackup();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -65,13 +65,21 @@ class BackupResource extends Resource
|
||||||
->columns([
|
->columns([
|
||||||
Tables\Columns\TextColumn::make('backup_type'),
|
Tables\Columns\TextColumn::make('backup_type'),
|
||||||
Tables\Columns\TextColumn::make('backupRelated'),
|
Tables\Columns\TextColumn::make('backupRelated'),
|
||||||
Tables\Columns\TextColumn::make('status'),
|
Tables\Columns\BadgeColumn::make('status')
|
||||||
|
->badge()
|
||||||
|
->color(fn (string $state): string => match ($state) {
|
||||||
|
'pending' => 'gray',
|
||||||
|
'running' => 'primary',
|
||||||
|
'completed' => 'success',
|
||||||
|
'failed' => 'danger',
|
||||||
|
default => 'gray',
|
||||||
|
}),
|
||||||
])
|
])
|
||||||
->filters([
|
->filters([
|
||||||
//
|
//
|
||||||
])
|
])
|
||||||
->actions([
|
->actions([
|
||||||
Tables\Actions\EditAction::make(),
|
Tables\Actions\ViewAction::make(),
|
||||||
])
|
])
|
||||||
->defaultSort('id', 'desc')
|
->defaultSort('id', 'desc')
|
||||||
->bulkActions([
|
->bulkActions([
|
||||||
|
|
|
@ -20,6 +20,16 @@ class Backup extends Model
|
||||||
'disk',
|
'disk',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
public static function boot()
|
||||||
|
{
|
||||||
|
parent::boot();
|
||||||
|
|
||||||
|
static::creating(function ($model) {
|
||||||
|
$model->status = 'pending';
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
protected function backupRelated() : Attribute
|
protected function backupRelated() : Attribute
|
||||||
{
|
{
|
||||||
$relatedWith = $this->backup_type;
|
$relatedWith = $this->backup_type;
|
||||||
|
@ -35,6 +45,19 @@ class Backup extends Model
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function checkBackup()
|
||||||
|
{
|
||||||
|
if ($this->status == 'running') {
|
||||||
|
$backupDoneFile = $this->path.'/backup.done';
|
||||||
|
if (file_exists($backupDoneFile)) {
|
||||||
|
$this->status = 'completed';
|
||||||
|
$this->completed = true;
|
||||||
|
$this->completed_at = now();
|
||||||
|
$this->save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function startBackup()
|
public function startBackup()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -80,6 +103,8 @@ class Backup extends Model
|
||||||
$shellFileContent .= 'touch ' . $backupPath. '/backup.done' . PHP_EOL;
|
$shellFileContent .= 'touch ' . $backupPath. '/backup.done' . PHP_EOL;
|
||||||
$shellFileContent .= 'rm -rf ' . $backupTempScript;
|
$shellFileContent .= 'rm -rf ' . $backupTempScript;
|
||||||
|
|
||||||
|
$this->path = $backupPath;
|
||||||
|
$this->filepath = $backupFilePath;
|
||||||
$this->status = 'running';
|
$this->status = 'running';
|
||||||
$this->queued = true;
|
$this->queued = true;
|
||||||
$this->queued_at = now();
|
$this->queued_at = now();
|
||||||
|
|
|
@ -17,6 +17,7 @@ return new class extends Migration
|
||||||
$table->string('backup_type')->nullable();
|
$table->string('backup_type')->nullable();
|
||||||
$table->string('status')->nullable();
|
$table->string('status')->nullable();
|
||||||
$table->string('path')->nullable();
|
$table->string('path')->nullable();
|
||||||
|
$table->string('filepath')->nullable();
|
||||||
$table->string('size')->nullable();
|
$table->string('size')->nullable();
|
||||||
$table->string('disk')->nullable();
|
$table->string('disk')->nullable();
|
||||||
$table->longText('settings')->nullable();
|
$table->longText('settings')->nullable();
|
||||||
|
|
Loading…
Reference in a new issue