Skip to content
Snippets Groups Projects

Issue #3462741 by junaidpv: Avoid so much hardcoding of db table in Database backend

Open Junaid requested to merge issue/advancedqueue-3462741:3462741-avoid-so-much into 8.x-1.x
@@ -26,6 +26,13 @@ class Database extends BackendBase implements SupportsDeletingJobsInterface, Sup
*/
protected $connection;
/**
* The database table.
*
* @var string
*/
protected const TABLE = 'advancedqueue';
/**
* Constructs a new Database object.
*
@@ -71,7 +78,7 @@ class Database extends BackendBase implements SupportsDeletingJobsInterface, Sup
*/
public function deleteQueue() {
// Delete all jobs in the current queue.
$this->connection->delete('advancedqueue')
$this->connection->delete(self::TABLE)
->condition('queue_id', $this->queueId)
->execute();
}
@@ -81,7 +88,7 @@ class Database extends BackendBase implements SupportsDeletingJobsInterface, Sup
*/
public function cleanupQueue() {
// Reset expired jobs.
$this->connection->update('advancedqueue')
$this->connection->update(self::TABLE)
->fields([
'state' => Job::STATE_QUEUED,
'expires' => 0,
@@ -124,7 +131,7 @@ class Database extends BackendBase implements SupportsDeletingJobsInterface, Sup
}
else {
$delete_before = $this->connection
->select('advancedqueue', 'a')
->select(self::TABLE, 'a')
->fields('a', ['processed'])
->condition('state', $states, 'IN')
->condition('queue_id', $this->queueId)
@@ -135,7 +142,7 @@ class Database extends BackendBase implements SupportsDeletingJobsInterface, Sup
}
if ($delete_before) {
$this->connection->delete('advancedqueue')
$this->connection->delete(self::TABLE)
->condition('queue_id', $this->queueId)
->condition('processed', $delete_before, '<')
->condition('state', $states, 'IN')
@@ -154,7 +161,7 @@ class Database extends BackendBase implements SupportsDeletingJobsInterface, Sup
Job::STATE_SUCCESS => 0,
Job::STATE_FAILURE => 0,
];
$query = 'SELECT state, COUNT(job_id) FROM {advancedqueue} WHERE queue_id = :queue_id GROUP BY state';
$query = "SELECT state, COUNT(job_id) FROM {" . self::TABLE . "} WHERE queue_id = :queue_id GROUP BY state";
$counts = $this->connection->query($query, [':queue_id' => $this->queueId])->fetchAllKeyed();
foreach ($counts as $state => $count) {
$jobs[$state] = $count;
@@ -192,7 +199,7 @@ class Database extends BackendBase implements SupportsDeletingJobsInterface, Sup
$fields['payload'] = json_encode($fields['payload']);
// InsertQuery supports inserting multiple rows at once, which is faster,
// but that doesn't give us the inserted job IDs.
$query = $this->connection->insert('advancedqueue')->fields($fields);
$query = $this->connection->insert(self::TABLE)->fields($fields);
$job_id = $query->execute();
$job->setId($job_id);
}
@@ -207,7 +214,7 @@ class Database extends BackendBase implements SupportsDeletingJobsInterface, Sup
throw new \InvalidArgumentException('Job must have its fingerprint set.');
}
$query = $this->connection->select('advancedqueue', 'aq')
$query = $this->connection->select(self::TABLE, 'aq')
->fields('aq')
->condition('queue_id', $this->queueId)
->condition('fingerprint', $fingerprint)
@@ -249,9 +256,9 @@ class Database extends BackendBase implements SupportsDeletingJobsInterface, Sup
// until a job is successfully claimed or we are reasonably sure there
// are no unclaimed jobs left.
while (TRUE) {
$query = 'SELECT * FROM {advancedqueue}
$query = "SELECT * FROM {" . self::TABLE . "}
WHERE queue_id = :queue_id AND state = :state AND available <= :now AND expires = 0
ORDER BY available, job_id ASC';
ORDER BY available, job_id ASC";
$params = [
':queue_id' => $this->queueId,
':state' => Job::STATE_QUEUED,
@@ -271,7 +278,7 @@ class Database extends BackendBase implements SupportsDeletingJobsInterface, Sup
// should really expire.
$state = Job::STATE_PROCESSING;
$expires = $this->time->getCurrentTime() + $this->configuration['lease_time'];
$update = $this->connection->update('advancedqueue')
$update = $this->connection->update(self::TABLE)
->fields([
'state' => $state,
'expires' => $expires,
@@ -307,7 +314,7 @@ class Database extends BackendBase implements SupportsDeletingJobsInterface, Sup
* {@inheritdoc}
*/
public function releaseJob($job_id) {
$this->connection->update('advancedqueue')
$this->connection->update(self::TABLE)
->fields([
'state' => Job::STATE_QUEUED,
'expires' => 0,
@@ -320,7 +327,7 @@ class Database extends BackendBase implements SupportsDeletingJobsInterface, Sup
* {@inheritdoc}
*/
public function deleteJob($job_id) {
$this->connection->delete('advancedqueue')
$this->connection->delete(self::TABLE)
->condition('job_id', $job_id)
->execute();
}
@@ -332,7 +339,7 @@ class Database extends BackendBase implements SupportsDeletingJobsInterface, Sup
* The job.
*/
protected function updateJob(Job $job) {
$this->connection->update('advancedqueue')
$this->connection->update(self::TABLE)
->fields([
'payload' => json_encode($job->getPayload()),
'state' => $job->getState(),
@@ -350,7 +357,7 @@ class Database extends BackendBase implements SupportsDeletingJobsInterface, Sup
* {@inheritdoc}
*/
public function loadJob($job_id) {
$query = 'SELECT * FROM {advancedqueue} WHERE queue_id = :queue_id AND job_id = :job_id';
$query = "SELECT * FROM {" . self::TABLE . "} WHERE queue_id = :queue_id AND job_id = :job_id";
$params = [
':queue_id' => $this->queueId,
':job_id' => $job_id,
Loading