Enable setStatus to handle multiple WorkflowRuns at the same time
[MAILPOET-4731]
This commit is contained in:
@ -100,7 +100,7 @@ class StepHandler {
|
|||||||
$this->handleStep($args);
|
$this->handleStep($args);
|
||||||
} catch (Throwable $e) {
|
} catch (Throwable $e) {
|
||||||
$status = $e instanceof InvalidStateException && $e->getErrorCode() === 'mailpoet_automation_workflow_not_active' ? WorkflowRun::STATUS_CANCELLED : WorkflowRun::STATUS_FAILED;
|
$status = $e instanceof InvalidStateException && $e->getErrorCode() === 'mailpoet_automation_workflow_not_active' ? WorkflowRun::STATUS_CANCELLED : WorkflowRun::STATUS_FAILED;
|
||||||
$this->workflowRunStorage->updateStatus((int)$args['workflow_run_id'], $status);
|
$this->workflowRunStorage->updateStatus($status, (int)$args['workflow_run_id']);
|
||||||
if (!$e instanceof Exception) {
|
if (!$e instanceof Exception) {
|
||||||
throw new Exception($e->getMessage(), intval($e->getCode()), $e);
|
throw new Exception($e->getMessage(), intval($e->getCode()), $e);
|
||||||
}
|
}
|
||||||
@ -131,7 +131,7 @@ class StepHandler {
|
|||||||
|
|
||||||
// complete workflow run
|
// complete workflow run
|
||||||
if (!$stepId) {
|
if (!$stepId) {
|
||||||
$this->workflowRunStorage->updateStatus($workflowRunId, WorkflowRun::STATUS_COMPLETE);
|
$this->workflowRunStorage->updateStatus(WorkflowRun::STATUS_COMPLETE, $workflowRunId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -183,7 +183,7 @@ class StepHandler {
|
|||||||
|
|
||||||
// no need to schedule a new step if the next step is null, complete the run
|
// no need to schedule a new step if the next step is null, complete the run
|
||||||
if (!$nextStep) {
|
if (!$nextStep) {
|
||||||
$this->workflowRunStorage->updateStatus($workflowRunId, WorkflowRun::STATUS_COMPLETE);
|
$this->workflowRunStorage->updateStatus(WorkflowRun::STATUS_COMPLETE, $workflowRunId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,9 +34,13 @@ class WorkflowRunStorage {
|
|||||||
return $result ? WorkflowRun::fromArray((array)$result) : null;
|
return $result ? WorkflowRun::fromArray((array)$result) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function updateStatus(int $id, string $status): void {
|
public function updateStatus(string $status, int ...$ids): void {
|
||||||
|
if (!$ids) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
$table = esc_sql($this->table);
|
$table = esc_sql($this->table);
|
||||||
$query = (string)$this->wpdb->prepare("UPDATE $table SET status = %s WHERE id = %d", $status, $id);
|
$ids = esc_sql(implode(',', $ids));
|
||||||
|
$query = (string)$this->wpdb->prepare("UPDATE $table SET status = %s WHERE id IN ($ids)", $status);
|
||||||
$result = $this->wpdb->query($query);
|
$result = $this->wpdb->query($query);
|
||||||
if ($result === false) {
|
if ($result === false) {
|
||||||
throw Exceptions::databaseError($this->wpdb->last_error);
|
throw Exceptions::databaseError($this->wpdb->last_error);
|
||||||
|
Reference in New Issue
Block a user