Вход Регистрация
Файл: vendor/laravel/framework/src/Illuminate/Queue/Failed/DatabaseUuidFailedJobProvider.php
Строк: 176
<?php

namespace IlluminateQueueFailed;

use 
DateTimeInterface;
use 
IlluminateDatabaseConnectionResolverInterface;
use 
IlluminateSupportFacadesDate;

class 
DatabaseUuidFailedJobProvider implements CountableFailedJobProviderFailedJobProviderInterfacePrunableFailedJobProvider
{
    
/**
     * The connection resolver implementation.
     *
     * @var IlluminateDatabaseConnectionResolverInterface
     */
    
protected $resolver;

    
/**
     * The database connection name.
     *
     * @var string
     */
    
protected $database;

    
/**
     * The database table.
     *
     * @var string
     */
    
protected $table;

    
/**
     * Create a new database failed job provider.
     *
     * @param  IlluminateDatabaseConnectionResolverInterface  $resolver
     * @param  string  $database
     * @param  string  $table
     * @return void
     */
    
public function __construct(ConnectionResolverInterface $resolver$database$table)
    {
        
$this->table $table;
        
$this->resolver $resolver;
        
$this->database $database;
    }

    
/**
     * Log a failed job into storage.
     *
     * @param  string  $connection
     * @param  string  $queue
     * @param  string  $payload
     * @param  Throwable  $exception
     * @return string|null
     */
    
public function log($connection$queue$payload$exception)
    {
        
$this->getTable()->insert([
            
'uuid' => $uuid json_decode($payloadtrue)['uuid'],
            
'connection' => $connection,
            
'queue' => $queue,
            
'payload' => $payload,
            
'exception' => (string) mb_convert_encoding($exception'UTF-8'),
            
'failed_at' => Date::now(),
        ]);

        return 
$uuid;
    }

    
/**
     * Get the IDs of all of the failed jobs.
     *
     * @param  string|null  $queue
     * @return array
     */
    
public function ids($queue null)
    {
        return 
$this->getTable()
            ->
when(! is_null($queue), fn ($query) => $query->where('queue'$queue))
            ->
orderBy('id''desc')
            ->
pluck('uuid')
            ->
all();
    }

    
/**
     * Get a list of all of the failed jobs.
     *
     * @return array
     */
    
public function all()
    {
        return 
$this->getTable()->orderBy('id''desc')->get()->map(function ($record) {
            
$record->id $record->uuid;
            unset(
$record->uuid);

            return 
$record;
        })->
all();
    }

    
/**
     * Get a single failed job.
     *
     * @param  mixed  $id
     * @return object|null
     */
    
public function find($id)
    {
        if (
$record $this->getTable()->where('uuid'$id)->first()) {
            
$record->id $record->uuid;
            unset(
$record->uuid);
        }

        return 
$record;
    }

    
/**
     * Delete a single failed job from storage.
     *
     * @param  mixed  $id
     * @return bool
     */
    
public function forget($id)
    {
        return 
$this->getTable()->where('uuid'$id)->delete() > 0;
    }

    
/**
     * Flush all of the failed jobs from storage.
     *
     * @param  int|null  $hours
     * @return void
     */
    
public function flush($hours null)
    {
        
$this->getTable()->when($hours, function ($query$hours) {
            
$query->where('failed_at''<='Date::now()->subHours($hours));
        })->
delete();
    }

    
/**
     * Prune all of the entries older than the given date.
     *
     * @param  DateTimeInterface  $before
     * @return int
     */
    
public function prune(DateTimeInterface $before)
    {
        
$query $this->getTable()->where('failed_at''<'$before);

        
$totalDeleted 0;

        do {
            
$deleted $query->take(1000)->delete();

            
$totalDeleted += $deleted;
        } while (
$deleted !== 0);

        return 
$totalDeleted;
    }

    
/**
     * Count the failed jobs.
     *
     * @param  string|null  $connection
     * @param  string|null  $queue
     * @return int
     */
    
public function count($connection null$queue null)
    {
        return 
$this->getTable()
            ->
when($connectionfn ($builder) => $builder->whereConnection($connection))
            ->
when($queuefn ($builder) => $builder->whereQueue($queue))
            ->
count();
    }

    
/**
     * Get a new query builder instance for the table.
     *
     * @return IlluminateDatabaseQueryBuilder
     */
    
protected function getTable()
    {
        return 
$this->resolver->connection($this->database)->table($this->table);
    }
}
Онлайн: 0
Реклама