coolify/app/Actions/CoolifyTask/PrepareCoolifyTask.php

56 lines
1.6 KiB
PHP
Raw Normal View History

2023-03-20 12:04:22 +00:00
<?php
2023-05-03 05:15:45 +00:00
namespace App\Actions\CoolifyTask;
2023-03-20 12:04:22 +00:00
2023-05-03 05:15:45 +00:00
use App\Data\CoolifyTaskArgs;
2023-05-03 06:24:34 +00:00
use App\Jobs\CoolifyTask;
2025-01-07 13:52:08 +00:00
use Illuminate\Database\Eloquent\Model;
use Spatie\Activitylog\Models\Activity;
2023-03-20 12:04:22 +00:00
2023-05-03 06:24:34 +00:00
/**
* The initial step to run a `CoolifyTask`: a remote SSH process
* with monitoring/tracking/trace feature. Such thing is made
* possible using an Activity model and some attributes.
*/
2023-05-03 05:15:45 +00:00
class PrepareCoolifyTask
2023-03-20 12:04:22 +00:00
{
protected Activity $activity;
2024-06-10 20:43:34 +00:00
2023-06-07 13:39:08 +00:00
protected CoolifyTaskArgs $remoteProcessArgs;
2025-01-07 13:52:08 +00:00
public function __construct(CoolifyTaskArgs $coolifyTaskArgs)
{
2025-01-07 13:52:08 +00:00
$this->remoteProcessArgs = $coolifyTaskArgs;
2023-06-07 13:39:08 +00:00
2025-01-07 13:52:08 +00:00
if ($coolifyTaskArgs->model instanceof Model) {
$properties = $coolifyTaskArgs->toArray();
unset($properties['model']);
$this->activity = activity()
->withProperties($properties)
2025-01-07 13:52:08 +00:00
->performedOn($coolifyTaskArgs->model)
->event($coolifyTaskArgs->type)
2024-06-10 20:43:34 +00:00
->log('[]');
} else {
$this->activity = activity()
2025-01-07 13:52:08 +00:00
->withProperties($coolifyTaskArgs->toArray())
->event($coolifyTaskArgs->type)
2024-06-10 20:43:34 +00:00
->log('[]');
}
2023-03-20 12:04:22 +00:00
}
public function __invoke(): Activity
2023-03-20 12:04:22 +00:00
{
2025-01-07 13:52:08 +00:00
$coolifyTask = new CoolifyTask(
activity: $this->activity,
ignore_errors: $this->remoteProcessArgs->ignore_errors,
call_event_on_finish: $this->remoteProcessArgs->call_event_on_finish,
call_event_data: $this->remoteProcessArgs->call_event_data,
);
2025-01-07 13:52:08 +00:00
dispatch($coolifyTask);
$this->activity->refresh();
2024-06-10 20:43:34 +00:00
2023-03-20 12:04:22 +00:00
return $this->activity;
}
}