Stabilize discovery workflow
This commit is contained in:
@@ -47,6 +47,19 @@ class ScanJobRepository
|
||||
return $results;
|
||||
}
|
||||
|
||||
public function findActive(): array
|
||||
{
|
||||
$statuses = ['pending', 'running', 'paused'];
|
||||
$placeholders = implode(',', array_fill(0, count($statuses), '?'));
|
||||
$stmt = $this->pdo->prepare("SELECT * FROM scan_jobs WHERE status IN ({$placeholders}) ORDER BY created_at ASC");
|
||||
$stmt->execute($statuses);
|
||||
$results = [];
|
||||
while ($row = $stmt->fetch()) {
|
||||
$results[] = ScanJob::fromArray($row);
|
||||
}
|
||||
return $results;
|
||||
}
|
||||
|
||||
public function findRunning(): array
|
||||
{
|
||||
$stmt = $this->pdo->prepare('SELECT * FROM scan_jobs WHERE status = :status ORDER BY started_at ASC');
|
||||
@@ -58,6 +71,22 @@ class ScanJobRepository
|
||||
return $results;
|
||||
}
|
||||
|
||||
public function updateStatus(int $id, string $status): void
|
||||
{
|
||||
$finishedAt = in_array($status, ['done', 'failed', 'cancelled'], true)
|
||||
? (new \DateTimeImmutable())->format('Y-m-d H:i:s')
|
||||
: null;
|
||||
|
||||
$stmt = $this->pdo->prepare(
|
||||
'UPDATE scan_jobs SET status = :status, finished_at = :finished_at WHERE id = :id'
|
||||
);
|
||||
$stmt->execute([
|
||||
'id' => $id,
|
||||
'status' => $status,
|
||||
'finished_at' => $finishedAt,
|
||||
]);
|
||||
}
|
||||
|
||||
public function save(ScanJob $job): void
|
||||
{
|
||||
$now = (new \DateTimeImmutable())->format('Y-m-d H:i:s');
|
||||
|
||||
Reference in New Issue
Block a user