Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
fix: fix config and add correct failed job provider
  • Loading branch information
divine committed Mar 1, 2022
commit cdf4556b363443c247618459b8116fc81d08945a
47 changes: 33 additions & 14 deletions src/MongodbQueueServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,41 @@
class MongodbQueueServiceProvider extends QueueServiceProvider
{
/**
* @inheritdoc
* Register the failed job services.
*
* @return void
*/
protected function registerFailedJobServices()
{
if (array_key_exists('driver', $config) &&
(is_null($config['driver']) || $config['driver'] === 'null')) {
return new NullFailedJobProvider;
}

// Add compatible queue failer if mongodb is configured.
if ($this->app['db']->connection(config('queue.failed.database'))->getDriverName() == 'mongodb') {
$this->app->singleton('queue.failer', function ($app) {
return new MongoFailedJobProvider($app['db'], config('queue.failed.database'), config('queue.failed.table'));
});
} else {
parent::registerFailedJobServices();
}
$this->app->singleton('queue.failer', function ($app) {
$config = $app['config']['queue.failed'];

if (array_key_exists('driver', $config) &&
(is_null($config['driver']) || $config['driver'] === 'null')) {
return new NullFailedJobProvider;
}

if (isset($config['driver']) && $config['driver'] === 'mongodb') {
return $this->mongoFailedJobProvider($config);
} else if (isset($config['driver']) && $config['driver'] === 'dynamodb') {
return $this->dynamoFailedJobProvider($config);
} elseif (isset($config['driver']) && $config['driver'] === 'database-uuids') {
return $this->databaseUuidFailedJobProvider($config);
} elseif (isset($config['table'])) {
return $this->databaseFailedJobProvider($config);
} else {
return new NullFailedJobProvider;
}
});
}

/**
* Create a new MongoDB failed job provider.
*
*/
protected function mongoFailedJobProvider(array $config): MongoFailedJobProvider
{
return new MongoFailedJobProvider($this->app['db'], $config['database'], $config['table']);
}

}