Refactoring: extract process handling from async job.
This commit is contained in:
parent
83a7ef21f3
commit
cf121062a1
@ -1,12 +1,13 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Services;
|
namespace App\Actions\RemoteProcess;
|
||||||
|
|
||||||
|
use App\Enums\ActivityTypes;
|
||||||
use App\Enums\ProcessStatus;
|
use App\Enums\ProcessStatus;
|
||||||
use App\Jobs\ExecuteCoolifyProcess;
|
use App\Jobs\ExecuteCoolifyProcess;
|
||||||
use Spatie\Activitylog\Contracts\Activity;
|
use Spatie\Activitylog\Contracts\Activity;
|
||||||
|
|
||||||
class CoolifyProcess
|
class DispatchRemoteProcess
|
||||||
{
|
{
|
||||||
protected Activity $activity;
|
protected Activity $activity;
|
||||||
|
|
||||||
@ -20,12 +21,12 @@ public function __construct(
|
|||||||
){
|
){
|
||||||
$this->activity = activity()
|
$this->activity = activity()
|
||||||
->withProperties([
|
->withProperties([
|
||||||
'type' => 'COOLIFY_PROCESS',
|
'type' => ActivityTypes::COOLIFY_PROCESS,
|
||||||
|
'status' => ProcessStatus::HOLDING,
|
||||||
'user' => $this->user,
|
'user' => $this->user,
|
||||||
'destination' => $this->destination,
|
'destination' => $this->destination,
|
||||||
'port' => $this->port,
|
'port' => $this->port,
|
||||||
'command' => $this->command,
|
'command' => $this->command,
|
||||||
'status' => ProcessStatus::HOLDING,
|
|
||||||
])
|
])
|
||||||
->log("Awaiting command to start...\n\n");
|
->log("Awaiting command to start...\n\n");
|
||||||
}
|
}
|
||||||
@ -38,8 +39,6 @@ public function __invoke(): Activity
|
|||||||
|
|
||||||
$this->activity->refresh();
|
$this->activity->refresh();
|
||||||
|
|
||||||
ray($this->activity->id);
|
|
||||||
|
|
||||||
return $this->activity;
|
return $this->activity;
|
||||||
}
|
}
|
||||||
|
|
@ -2,14 +2,17 @@
|
|||||||
|
|
||||||
namespace App\Actions\RemoteProcess;
|
namespace App\Actions\RemoteProcess;
|
||||||
|
|
||||||
|
use App\Enums\ActivityTypes;
|
||||||
use App\Enums\ProcessStatus;
|
use App\Enums\ProcessStatus;
|
||||||
use Illuminate\Process\ProcessResult;
|
use Illuminate\Process\ProcessResult;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use Illuminate\Support\Facades\Process;
|
use Illuminate\Support\Facades\Process;
|
||||||
use Spatie\Activitylog\Contracts\Activity;
|
use Spatie\Activitylog\Contracts\Activity;
|
||||||
|
|
||||||
class RemoteProcess
|
class RunRemoteProcess
|
||||||
{
|
{
|
||||||
|
public Activity $activity;
|
||||||
|
|
||||||
protected $timeStart;
|
protected $timeStart;
|
||||||
|
|
||||||
protected $currentTime;
|
protected $currentTime;
|
||||||
@ -25,9 +28,14 @@ class RemoteProcess
|
|||||||
/**
|
/**
|
||||||
* Create a new job instance.
|
* Create a new job instance.
|
||||||
*/
|
*/
|
||||||
public function __construct(
|
public function __construct(Activity $activity)
|
||||||
public Activity $activity,
|
{
|
||||||
){}
|
if ($activity->getExtraProperty('type') !== ActivityTypes::COOLIFY_PROCESS->value) {
|
||||||
|
throw new \RuntimeException('Incompatible Activity to run a remote command.');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->activity = $activity;
|
||||||
|
}
|
||||||
|
|
||||||
public function __invoke(): ProcessResult
|
public function __invoke(): ProcessResult
|
||||||
{
|
{
|
8
app/Enums/ActivityTypes.php
Normal file
8
app/Enums/ActivityTypes.php
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Enums;
|
||||||
|
|
||||||
|
enum ActivityTypes: string
|
||||||
|
{
|
||||||
|
case COOLIFY_PROCESS = 'coolify_process';
|
||||||
|
}
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Jobs;
|
namespace App\Jobs;
|
||||||
|
|
||||||
use App\Actions\RemoteProcess\RemoteProcess;
|
use App\Actions\RemoteProcess\RunRemoteProcess;
|
||||||
use Illuminate\Bus\Queueable;
|
use Illuminate\Bus\Queueable;
|
||||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||||
use Illuminate\Foundation\Bus\Dispatchable;
|
use Illuminate\Foundation\Bus\Dispatchable;
|
||||||
@ -26,7 +26,7 @@ public function __construct(
|
|||||||
*/
|
*/
|
||||||
public function handle(): void
|
public function handle(): void
|
||||||
{
|
{
|
||||||
$remoteProcess = resolve(RemoteProcess::class, [
|
$remoteProcess = resolve(RunRemoteProcess::class, [
|
||||||
'activity' => $this->activity,
|
'activity' => $this->activity,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use App\Services\CoolifyProcess;
|
use App\Actions\RemoteProcess\DispatchRemoteProcess;
|
||||||
use Spatie\Activitylog\Contracts\Activity;
|
use Spatie\Activitylog\Contracts\Activity;
|
||||||
|
|
||||||
if (! function_exists('remoteProcess')) {
|
if (! function_exists('remoteProcess')) {
|
||||||
@ -11,7 +11,7 @@
|
|||||||
*/
|
*/
|
||||||
function remoteProcess($command, $destination): Activity
|
function remoteProcess($command, $destination): Activity
|
||||||
{
|
{
|
||||||
return resolve(CoolifyProcess::class, [
|
return resolve(DispatchRemoteProcess::class, [
|
||||||
'destination' => $destination,
|
'destination' => $destination,
|
||||||
'command' => $command,
|
'command' => $command,
|
||||||
])();
|
])();
|
||||||
|
5
tests/Unit/RulesTest.php
Normal file
5
tests/Unit/RulesTest.php
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
test('globals')
|
||||||
|
->expect(['dd', 'dump', 'ray'])
|
||||||
|
->not->toBeUsed();
|
Loading…
Reference in New Issue
Block a user