From 8dc1ef61b894d213d5bb55a278fc16658d94a735 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20=C5=A0tancl?= Date: Sat, 7 Sep 2019 17:23:44 +0200 Subject: [PATCH] QueueTenancyBootstrapper --- .../QueueTenancyBootstrapper.php | 53 +++++++++++++++++++ src/TenancyServiceProvider.php | 27 ---------- 2 files changed, 53 insertions(+), 27 deletions(-) create mode 100644 src/TenancyBootstrappers/QueueTenancyBootstrapper.php diff --git a/src/TenancyBootstrappers/QueueTenancyBootstrapper.php b/src/TenancyBootstrappers/QueueTenancyBootstrapper.php new file mode 100644 index 00000000..3fa95e0a --- /dev/null +++ b/src/TenancyBootstrappers/QueueTenancyBootstrapper.php @@ -0,0 +1,53 @@ +app = $app; + + $this->app['queue']->createPayloadUsing([$this, 'createPayload']); + $this->app['events']->listen(\Illuminate\Queue\Events\JobProcessing::class, function ($event) { + if (\array_key_exists('tenant_id', $event->job->payload())) { + tenancy()->initById($event->job->payload()['tenant_id']); // todo + } + }); + } + + public function start() + { + $this->started = true; + } + + public function end() + { + $this->started = false; + } + + public function createPayload() + { + if (! $this->started) { + return []; + } + + [$uuid, $domain] = tenant()->get(['uuid', 'domain']); + + return [ + 'tenant_id' => $uuid, + 'tags' => [ + "tenant:$uuid", + "domain:$domain", + ], + ]; + } +} \ No newline at end of file diff --git a/src/TenancyServiceProvider.php b/src/TenancyServiceProvider.php index dc2a7d7a..e55c8634 100644 --- a/src/TenancyServiceProvider.php +++ b/src/TenancyServiceProvider.php @@ -56,7 +56,6 @@ class TenancyServiceProvider extends ServiceProvider } $this->registerTenantRedirectMacro(); - $this->makeQueuesTenantAware(); } public function setTelescopeTags() @@ -88,32 +87,6 @@ class TenancyServiceProvider extends ServiceProvider }); } - // todo should this be a tenancybootstrapper? - public function makeQueuesTenantAware() - { - $this->app['queue']->createPayloadUsing(function () { - if (tenancy()->initialized) { - [$uuid, $domain] = tenant()->get(['uuid', 'domain']); - - return [ - 'tenant_uuid' => $uuid, - 'tags' => [ - "tenant:$uuid", - "domain:$domain", - ], - ]; - } - - return []; - }); - - $this->app['events']->listen(\Illuminate\Queue\Events\JobProcessing::class, function ($event) { - if (\array_key_exists('tenant_uuid', $event->job->payload())) { - tenancy()->initById($event->job->payload()['tenant_uuid']); - } - }); - } - /** * Register services. *