master

laravel/framework

Last updated at: 29/12/2023 09:24

DatabaseJobRecord.php

TLDR

This file defines the DatabaseJobRecord class, which is responsible for interacting with the job record in the database. The class contains methods for incrementing the number of job attempts and updating the "reserved at" timestamp of the job. It also provides a dynamic getter method to access the underlying job information.

Methods

increment

This method increments the number of times the job has been attempted and returns the updated attempts count.

touch

This method updates the "reserved at" timestamp of the job with the current time and returns the updated reserved timestamp.

__get

This is a magic method that allows accessing the underlying job information dynamically using the specified key.

<?php

namespace Illuminate\Queue\Jobs;

use Illuminate\Support\InteractsWithTime;

class DatabaseJobRecord
{
    use InteractsWithTime;

    /**
     * The underlying job record.
     *
     * @var \stdClass
     */
    protected $record;

    /**
     * Create a new job record instance.
     *
     * @param  \stdClass  $record
     * @return void
     */
    public function __construct($record)
    {
        $this->record = $record;
    }

    /**
     * Increment the number of times the job has been attempted.
     *
     * @return int
     */
    public function increment()
    {
        $this->record->attempts++;

        return $this->record->attempts;
    }

    /**
     * Update the "reserved at" timestamp of the job.
     *
     * @return int
     */
    public function touch()
    {
        $this->record->reserved_at = $this->currentTime();

        return $this->record->reserved_at;
    }

    /**
     * Dynamically access the underlying job information.
     *
     * @param  string  $key
     * @return mixed
     */
    public function __get($key)
    {
        return $this->record->{$key};
    }
}