- Pagination: drop the perPage override from ListAutomations and the
hardcoded page size from GetAutomationInvocations; both use
config('app.pagination.default'). Document the rule in CLAUDE.md.
- Imports: import DomainException / InvalidArgumentException / Throwable
instead of inline backslash references across the automation actions.
- i18n: move the hardcoded Fetch RSS and HTTP Request failure strings to
automations.errors.* in all three locales.
- Publish: require scheduled_offset when mode is scheduled (validation)
and drop the magic 60-minute default in the node. Fixes the required_if
rules to reference the concrete node index instead of a wildcard that
never resolved (also repairs the trigger cron rule).
- Condition handles: back the yes/no output handles with a shared
Condition\Handle enum (PHP) and ConditionHandle const (TS).
28 lines
660 B
PHP
28 lines
660 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Actions\Automation\Run;
|
|
|
|
use App\Enums\Automation\Run\Status;
|
|
use App\Jobs\Automation\ProcessAutomationNode;
|
|
use App\Models\AutomationRun;
|
|
use DomainException;
|
|
|
|
class RetryRunFromNode
|
|
{
|
|
public function __invoke(AutomationRun $run, string $nodeId): void
|
|
{
|
|
if ($run->status !== Status::Failed) {
|
|
throw new DomainException(__('automations.errors.only_failed_can_retry'));
|
|
}
|
|
|
|
$run->update([
|
|
'status' => Status::Pending,
|
|
'error' => null,
|
|
'finished_at' => null,
|
|
]);
|
|
|
|
ProcessAutomationNode::dispatch($run, $nodeId);
|
|
}
|
|
}
|