From 92ebc1f01bed96a028c4e1a6e33523c8a454163c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20=C5=A0tancl?= Date: Tue, 30 Jul 2019 21:05:30 +0200 Subject: [PATCH] Add support for global cache (#78) --- composer.json | 3 ++- src/GlobalCacheFacade.php | 13 ++++++++++ src/TenancyServiceProvider.php | 5 ++++ tests/GlobalCacheTest.php | 43 ++++++++++++++++++++++++++++++++++ tests/TestCase.php | 3 ++- 5 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 src/GlobalCacheFacade.php create mode 100644 tests/GlobalCacheTest.php diff --git a/composer.json b/composer.json index e6fc68186..6e55ab952 100644 --- a/composer.json +++ b/composer.json @@ -40,7 +40,8 @@ "Stancl\\Tenancy\\TenancyServiceProvider" ], "aliases": { - "Tenancy": "Stancl\\Tenancy\\TenancyFacade" + "Tenancy": "Stancl\\Tenancy\\TenancyFacade", + "GlobalCache": "Stancl\\Tenancy\\GlobalCacheFacade" } } }, diff --git a/src/GlobalCacheFacade.php b/src/GlobalCacheFacade.php new file mode 100644 index 000000000..ba2f8fade --- /dev/null +++ b/src/GlobalCacheFacade.php @@ -0,0 +1,13 @@ +app->singleton(Seed::class, function ($app) { return new Seed($app['db'], $app[DatabaseManager::class]); }); + + $this->app->bind('globalCache', function ($app) { + return new CacheManager($app); + }); } } diff --git a/tests/GlobalCacheTest.php b/tests/GlobalCacheTest.php new file mode 100644 index 000000000..e67a0c73f --- /dev/null +++ b/tests/GlobalCacheTest.php @@ -0,0 +1,43 @@ +assertSame(null, cache('foo')); + GlobalCache::put(['foo' => 'bar'], 1); + $this->assertSame('bar', GlobalCache::get('foo')); + + tenant()->create('foo.localhost'); + tenancy()->init('foo.localhost'); + $this->assertSame('bar', GlobalCache::get('foo')); + + GlobalCache::put(['abc' => 'xyz'], 1); + cache(['def' => 'ghi'], 1); + $this->assertSame('ghi', cache('def')); + + tenancy()->end(); + $this->assertSame('xyz', GlobalCache::get('abc')); + $this->assertSame('bar', GlobalCache::get('foo')); + $this->assertSame(null, cache('def')); + + tenant()->create('bar.localhost'); + tenancy()->init('bar.localhost'); + $this->assertSame('xyz', GlobalCache::get('abc')); + $this->assertSame('bar', GlobalCache::get('foo')); + $this->assertSame(null, cache('def')); + cache(['def' => 'xxx'], 1); + $this->assertSame('xxx', cache('def')); + + tenancy()->init('foo.localhost'); + $this->assertSame('ghi', cache('def')); + } +} \ No newline at end of file diff --git a/tests/TestCase.php b/tests/TestCase.php index fc250f6dd..b9b9c20bd 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -98,7 +98,8 @@ protected function getPackageProviders($app) protected function getPackageAliases($app) { return [ - 'Tenancy' => \Stancl\Tenancy\TenancyFacade::class + 'Tenancy' => \Stancl\Tenancy\TenancyFacade::class, + 'GlobalCache' => \Stancl\Tenancy\GlobalCacheFacade::class, ]; }