1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2025-12-12 21:34:04 +00:00

Add support for global cache (#78)

This commit is contained in:
Samuel Štancl 2019-07-30 21:05:30 +02:00 committed by GitHub
parent d0d1f6930b
commit 92ebc1f01b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 65 additions and 2 deletions

View file

@ -40,7 +40,8 @@
"Stancl\\Tenancy\\TenancyServiceProvider" "Stancl\\Tenancy\\TenancyServiceProvider"
], ],
"aliases": { "aliases": {
"Tenancy": "Stancl\\Tenancy\\TenancyFacade" "Tenancy": "Stancl\\Tenancy\\TenancyFacade",
"GlobalCache": "Stancl\\Tenancy\\GlobalCacheFacade"
} }
} }
}, },

13
src/GlobalCacheFacade.php Normal file
View file

@ -0,0 +1,13 @@
<?php
namespace Stancl\Tenancy;
use Illuminate\Support\Facades\Facade;
class GlobalCacheFacade extends Facade
{
protected static function getFacadeAccessor()
{
return 'globalCache';
}
}

View file

@ -12,6 +12,7 @@ use Illuminate\Support\ServiceProvider;
use Stancl\Tenancy\Commands\TenantList; use Stancl\Tenancy\Commands\TenantList;
use Stancl\Tenancy\Interfaces\StorageDriver; use Stancl\Tenancy\Interfaces\StorageDriver;
use Stancl\Tenancy\Interfaces\ServerConfigManager; use Stancl\Tenancy\Interfaces\ServerConfigManager;
use Illuminate\Cache\CacheManager;
class TenancyServiceProvider extends ServiceProvider class TenancyServiceProvider extends ServiceProvider
{ {
@ -69,5 +70,9 @@ class TenancyServiceProvider extends ServiceProvider
$this->app->singleton(Seed::class, function ($app) { $this->app->singleton(Seed::class, function ($app) {
return new Seed($app['db'], $app[DatabaseManager::class]); return new Seed($app['db'], $app[DatabaseManager::class]);
}); });
$this->app->bind('globalCache', function ($app) {
return new CacheManager($app);
});
} }
} }

43
tests/GlobalCacheTest.php Normal file
View file

@ -0,0 +1,43 @@
<?php
namespace Stancl\Tenancy\Tests;
use GlobalCache;
class GlobalCacheTest extends TestCase
{
public $autoCreateTenant = false;
public $autoInitTenancy = false;
/** @test */
public function global_cache_manager_stores_data_in_global_cache()
{
$this->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'));
}
}

View file

@ -98,7 +98,8 @@ abstract class TestCase extends \Orchestra\Testbench\TestCase
protected function getPackageAliases($app) protected function getPackageAliases($app)
{ {
return [ return [
'Tenancy' => \Stancl\Tenancy\TenancyFacade::class 'Tenancy' => \Stancl\Tenancy\TenancyFacade::class,
'GlobalCache' => \Stancl\Tenancy\GlobalCacheFacade::class,
]; ];
} }