From 8ac4d87e942939c67ebb8ebe215a9c7414461321 Mon Sep 17 00:00:00 2001 From: lukinovec Date: Thu, 13 Apr 2023 07:47:18 +0200 Subject: [PATCH] Use a single original prefix --- .../PrefixCacheTenancyBootstrapper.php | 19 ++++++------------- tests/PrefixCacheBootstrapperTest.php | 17 ----------------- 2 files changed, 6 insertions(+), 30 deletions(-) diff --git a/src/Bootstrappers/PrefixCacheTenancyBootstrapper.php b/src/Bootstrappers/PrefixCacheTenancyBootstrapper.php index fe6650ca..826ebd59 100644 --- a/src/Bootstrappers/PrefixCacheTenancyBootstrapper.php +++ b/src/Bootstrappers/PrefixCacheTenancyBootstrapper.php @@ -14,8 +14,7 @@ use Stancl\Tenancy\Contracts\Tenant; class PrefixCacheTenancyBootstrapper implements TenancyBootstrapper { - protected string|null $defaultPrefix = null; - public static array $originalPrefixes = []; // E.g. 'redis' => 'redis_prefix_' (if not specified, use config('cache.prefix') as the default) + protected string|null $originalPrefix = null; public static array $tenantCacheStores = []; // E.g. 'redis' public static array $prefixGenerators = [ // driverName => Closure(Tenant $tenant) @@ -29,11 +28,7 @@ class PrefixCacheTenancyBootstrapper implements TenancyBootstrapper public function bootstrap(Tenant $tenant): void { - $this->defaultPrefix = $this->config->get('cache.prefix'); - - foreach (static::$tenantCacheStores as $store) { - static::$originalPrefixes[$store] ??= $this->defaultPrefix; - } + $this->originalPrefix = $this->config->get('cache.prefix'); foreach (static::$tenantCacheStores as $store) { $this->setCachePrefix($store, $this->getStorePrefix($store, $tenant)); @@ -42,11 +37,9 @@ class PrefixCacheTenancyBootstrapper implements TenancyBootstrapper public function revert(): void { - foreach (static::$originalPrefixes as $driver => $prefix) { - $this->setCachePrefix($driver, $prefix); + foreach (static::$tenantCacheStores as $store) { + $this->setCachePrefix($store, $this->originalPrefix); } - - static::$originalPrefixes = []; } protected function setCachePrefix(string $driver, string|null $prefix): void @@ -62,7 +55,7 @@ class PrefixCacheTenancyBootstrapper implements TenancyBootstrapper // Now that the store uses the passed prefix // Set the configured prefix back to the default one - $this->config->set('cache.prefix', $this->defaultPrefix); + $this->config->set('cache.prefix', $this->originalPrefix); } public function getStorePrefix(string $store, Tenant $tenant): string @@ -71,7 +64,7 @@ class PrefixCacheTenancyBootstrapper implements TenancyBootstrapper return static::$prefixGenerators[$store]($tenant); } - return (static::$originalPrefixes[$store] ?? $this->defaultPrefix) . $this->config->get('tenancy.cache.prefix_base') . $tenant->getTenantKey(); + return $this->originalPrefix . $this->config->get('tenancy.cache.prefix_base') . $tenant->getTenantKey(); } public static function generatePrefixUsing(string $store, Closure $prefixGenerator): void diff --git a/tests/PrefixCacheBootstrapperTest.php b/tests/PrefixCacheBootstrapperTest.php index f0a04641..f0d0ac40 100644 --- a/tests/PrefixCacheBootstrapperTest.php +++ b/tests/PrefixCacheBootstrapperTest.php @@ -23,7 +23,6 @@ beforeEach(function () { PrefixCacheTenancyBootstrapper::$tenantCacheStores = [$cacheDriver]; PrefixCacheTenancyBootstrapper::$prefixGenerators = []; - PrefixCacheTenancyBootstrapper::$originalPrefixes = []; TenancyCacheManager::$addTags = false; @@ -34,7 +33,6 @@ beforeEach(function () { afterEach(function () { PrefixCacheTenancyBootstrapper::$tenantCacheStores = []; PrefixCacheTenancyBootstrapper::$prefixGenerators = []; - PrefixCacheTenancyBootstrapper::$originalPrefixes = []; TenancyCacheManager::$addTags = true; }); @@ -341,18 +339,3 @@ test('stores get prefixed using the default way if the store does not have a cor expect(cache()->store('redis')->getPrefix())->toBe($expectedPrefix . ':'); tenancy()->end(); }); - -test('stores can have different original prefixes', function() { - config(['cache.default' => 'redis']); - config(['cache.stores.redis2' => config('cache.stores.redis')]); - config(['cache.prefix' => $defaultOriginalPrefix = 'default_prefix_']); - - // The prefix specified for a store in PrefixCacheTenancyBootstrapper::$originalPrefixes - // Will be used as the original prefix for that store instead of `config('cache.prefix')` - PrefixCacheTenancyBootstrapper::$originalPrefixes = ['redis2' => $customOriginalPrefix = 'redis2_prefix_']; - PrefixCacheTenancyBootstrapper::$tenantCacheStores = ['redis', 'redis2']; - - tenancy()->initialize(Tenant::create()); - expect(cache()->store('redis')->getPrefix())->toStartWith($defaultOriginalPrefix); - expect(cache()->store('redis2')->getPrefix())->toStartWith($customOriginalPrefix); -});