From 3afb324e6b3c3cd6ac5b888b58f49fa8011c1973 Mon Sep 17 00:00:00 2001 From: Fady Khalife Date: Wed, 23 Mar 2016 12:21:17 +1100 Subject: [PATCH 1/4] Fixes #789 --- README.md | 15 +++++ .../Mongodb/MongodbQueueServiceProvider.php | 27 ++++++++ .../Queue/Failed/MongoFailedJobProvider.php | 66 +++++++++++++++++++ 3 files changed, 108 insertions(+) create mode 100644 src/Jenssegers/Mongodb/MongodbQueueServiceProvider.php create mode 100644 src/Jenssegers/Mongodb/Queue/Failed/MongoFailedJobProvider.php diff --git a/README.md b/README.md index ea94aa43c..1a7f53c0a 100644 --- a/README.md +++ b/README.md @@ -262,6 +262,21 @@ If you want to use MongoDB as your database backend, change the the driver in `c ], ``` +If you want to use MongoDB to handle failed jobs, change the database in `config/queue.php`: + +```php +'failed' => [ + 'database' => 'mongodb', + 'table' => 'failed_jobs', + ], +``` + +And add the service provider in `config/app.php`: + +```php +Jenssegers\Mongodb\MongodbQueueServiceProvider::class, +``` + ### Sentry If you want to use this library with [Sentry](https://cartalyst.com/manual/sentry), then check out https://github.com/jenssegers/Laravel-MongoDB-Sentry diff --git a/src/Jenssegers/Mongodb/MongodbQueueServiceProvider.php b/src/Jenssegers/Mongodb/MongodbQueueServiceProvider.php new file mode 100644 index 000000000..23a2bd1f6 --- /dev/null +++ b/src/Jenssegers/Mongodb/MongodbQueueServiceProvider.php @@ -0,0 +1,27 @@ +app->singleton('queue.failer', function ($app) { + return new MongoFailedJobProvider($app['db'], config('queue.failed.database'), config('queue.failed.table')); + }); + } + else + { + parent::registerFailedJobServices(); + } + } +} \ No newline at end of file diff --git a/src/Jenssegers/Mongodb/Queue/Failed/MongoFailedJobProvider.php b/src/Jenssegers/Mongodb/Queue/Failed/MongoFailedJobProvider.php new file mode 100644 index 000000000..44a6fe898 --- /dev/null +++ b/src/Jenssegers/Mongodb/Queue/Failed/MongoFailedJobProvider.php @@ -0,0 +1,66 @@ +getTimestamp(); + + $this->getTable()->insert(compact('connection', 'queue', 'payload', 'failed_at')); + } + + /** + * Get a list of all of the failed jobs. + * + * @return array + */ + public function all() + { + $all = $this->getTable()->orderBy('_id', 'desc')->get(); + + $all = array_map(function($job) { + $job['id'] = (string)$job['_id']; + return $job; + }, $all); + + return $all; + } + + /** + * Get a single failed job. + * + * @param mixed $id + * @return array + */ + public function find($id) + { + $job = $this->getTable()->find($id); + + $job['id'] = (string)$job['_id']; + + return $job; + } + + /** + * Delete a single failed job from storage. + * + * @param mixed $id + * @return bool + */ + public function forget($id) + { + return $this->getTable()->where('_id', $id)->delete() > 0; + } +} From 9636c2775560c742d4c434321e59688197d6ec00 Mon Sep 17 00:00:00 2001 From: Fady Khalife Date: Wed, 23 Mar 2016 12:29:23 +1100 Subject: [PATCH 2/4] StyleCI fixes --- src/Jenssegers/Mongodb/MongodbQueueServiceProvider.php | 7 ++----- .../Mongodb/Queue/Failed/MongoFailedJobProvider.php | 4 ++-- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/Jenssegers/Mongodb/MongodbQueueServiceProvider.php b/src/Jenssegers/Mongodb/MongodbQueueServiceProvider.php index 23a2bd1f6..2eb618736 100644 --- a/src/Jenssegers/Mongodb/MongodbQueueServiceProvider.php +++ b/src/Jenssegers/Mongodb/MongodbQueueServiceProvider.php @@ -13,14 +13,11 @@ class MongodbQueueServiceProvider extends QueueServiceProvider protected function registerFailedJobServices() { // Add compatible queue failer if mongodb is configured. - if(config('queue.failed.database') == 'mongodb') - { + if(config('queue.failed.database') == 'mongodb') { $this->app->singleton('queue.failer', function ($app) { return new MongoFailedJobProvider($app['db'], config('queue.failed.database'), config('queue.failed.table')); }); - } - else - { + } else { parent::registerFailedJobServices(); } } diff --git a/src/Jenssegers/Mongodb/Queue/Failed/MongoFailedJobProvider.php b/src/Jenssegers/Mongodb/Queue/Failed/MongoFailedJobProvider.php index 44a6fe898..6a8c6fefd 100644 --- a/src/Jenssegers/Mongodb/Queue/Failed/MongoFailedJobProvider.php +++ b/src/Jenssegers/Mongodb/Queue/Failed/MongoFailedJobProvider.php @@ -31,7 +31,7 @@ public function all() $all = $this->getTable()->orderBy('_id', 'desc')->get(); $all = array_map(function($job) { - $job['id'] = (string)$job['_id']; + $job['id'] = (string) $job['_id']; return $job; }, $all); @@ -48,7 +48,7 @@ public function find($id) { $job = $this->getTable()->find($id); - $job['id'] = (string)$job['_id']; + $job['id'] = (string) $job['_id']; return $job; } From 4b688de7ce22870b17971908e5cb42eaa1272e0e Mon Sep 17 00:00:00 2001 From: Fady Khalife Date: Wed, 23 Mar 2016 17:10:24 +1100 Subject: [PATCH 3/4] StyleCI fixes --- src/Jenssegers/Mongodb/MongodbQueueServiceProvider.php | 2 +- src/Jenssegers/Mongodb/Queue/Failed/MongoFailedJobProvider.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Jenssegers/Mongodb/MongodbQueueServiceProvider.php b/src/Jenssegers/Mongodb/MongodbQueueServiceProvider.php index 2eb618736..5acfd0c0e 100644 --- a/src/Jenssegers/Mongodb/MongodbQueueServiceProvider.php +++ b/src/Jenssegers/Mongodb/MongodbQueueServiceProvider.php @@ -13,7 +13,7 @@ class MongodbQueueServiceProvider extends QueueServiceProvider protected function registerFailedJobServices() { // Add compatible queue failer if mongodb is configured. - if(config('queue.failed.database') == 'mongodb') { + if (config('queue.failed.database') == 'mongodb') { $this->app->singleton('queue.failer', function ($app) { return new MongoFailedJobProvider($app['db'], config('queue.failed.database'), config('queue.failed.table')); }); diff --git a/src/Jenssegers/Mongodb/Queue/Failed/MongoFailedJobProvider.php b/src/Jenssegers/Mongodb/Queue/Failed/MongoFailedJobProvider.php index 6a8c6fefd..4234f885d 100644 --- a/src/Jenssegers/Mongodb/Queue/Failed/MongoFailedJobProvider.php +++ b/src/Jenssegers/Mongodb/Queue/Failed/MongoFailedJobProvider.php @@ -30,7 +30,7 @@ public function all() { $all = $this->getTable()->orderBy('_id', 'desc')->get(); - $all = array_map(function($job) { + $all = array_map(function ($job) { $job['id'] = (string) $job['_id']; return $job; }, $all); From c752bc3a2dccba520d6ab21ed654e816b323a74b Mon Sep 17 00:00:00 2001 From: Fady Khalife Date: Fri, 5 Aug 2016 12:24:09 +1000 Subject: [PATCH 4/4] StyleCI fixes --- src/Jenssegers/Mongodb/MongodbQueueServiceProvider.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Jenssegers/Mongodb/MongodbQueueServiceProvider.php b/src/Jenssegers/Mongodb/MongodbQueueServiceProvider.php index 5acfd0c0e..8321992e4 100644 --- a/src/Jenssegers/Mongodb/MongodbQueueServiceProvider.php +++ b/src/Jenssegers/Mongodb/MongodbQueueServiceProvider.php @@ -21,4 +21,4 @@ protected function registerFailedJobServices() parent::registerFailedJobServices(); } } -} \ No newline at end of file +}