mirror of
https://github.com/archtechx/tenancy.git
synced 2025-12-13 01:44:04 +00:00
Rewrite cached resolver logic to allow for cache invalidation logic
This commit is contained in:
parent
b176481cdf
commit
5d94727ddd
15 changed files with 189 additions and 117 deletions
28
src/Database/Concerns/InvalidatesResolverCache.php
Normal file
28
src/Database/Concerns/InvalidatesResolverCache.php
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
<?php
|
||||
|
||||
namespace Stancl\Tenancy\Database\Concerns;
|
||||
|
||||
use Stancl\Tenancy\Contracts\Tenant;
|
||||
use Stancl\Tenancy\Resolvers\Contracts\CachedTenantResolver;
|
||||
use Stancl\Tenancy\Resolvers;
|
||||
|
||||
trait InvalidatesResolverCache
|
||||
{
|
||||
public static $resolvers = [
|
||||
Resolvers\DomainTenantResolver::class,
|
||||
Resolvers\PathTenantResolver::class,
|
||||
Resolvers\RequestDataTenantResolver::class,
|
||||
];
|
||||
|
||||
public static function bootInvalidatesResolverCache()
|
||||
{
|
||||
static::saved(function (Tenant $tenant) {
|
||||
foreach (static::$resolvers as $resolver) {
|
||||
/** @var CachedTenantResolver $resolver */
|
||||
$resolver = app($resolver);
|
||||
|
||||
$resolver->invalidateCache($tenant);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
32
src/Database/Concerns/InvalidatesTenantsResolverCache.php
Normal file
32
src/Database/Concerns/InvalidatesTenantsResolverCache.php
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
<?php
|
||||
|
||||
namespace Stancl\Tenancy\Database\Concerns;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Stancl\Tenancy\Contracts\Tenant;
|
||||
use Stancl\Tenancy\Resolvers\Contracts\CachedTenantResolver;
|
||||
use Stancl\Tenancy\Resolvers;
|
||||
|
||||
/**
|
||||
* Meant to be used on models that belong to tenants.
|
||||
*/
|
||||
trait InvalidatesTenantsResolverCache
|
||||
{
|
||||
public static $resolvers = [
|
||||
Resolvers\DomainTenantResolver::class,
|
||||
Resolvers\PathTenantResolver::class,
|
||||
Resolvers\RequestDataTenantResolver::class,
|
||||
];
|
||||
|
||||
public static function bootInvalidatesTenantsResolverCache()
|
||||
{
|
||||
static::saved(function (Model $model) {
|
||||
foreach (static::$resolvers as $resolver) {
|
||||
/** @var CachedTenantResolver $resolver */
|
||||
$resolver = app($resolver);
|
||||
|
||||
$resolver->invalidateCache($model->tenant);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -19,7 +19,8 @@ use Stancl\Tenancy\Events;
|
|||
class Domain extends Model implements Contracts\Domain
|
||||
{
|
||||
use Concerns\CentralConnection,
|
||||
Concerns\EnsuresDomainIsNotOccupied;
|
||||
Concerns\EnsuresDomainIsNotOccupied,
|
||||
Concerns\InvalidatesTenantsResolverCache;
|
||||
|
||||
protected $guarded = [];
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,8 @@ class Tenant extends Model implements Contracts\Tenant
|
|||
Concerns\GeneratesIds,
|
||||
Concerns\HasDataColumn,
|
||||
Concerns\HasInternalKeys,
|
||||
Concerns\TenantRun;
|
||||
Concerns\TenantRun,
|
||||
Concerns\InvalidatesResolverCache;
|
||||
|
||||
protected $table = 'tenants';
|
||||
protected $primaryKey = 'id';
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue