1
0
Fork 0
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:
Samuel Štancl 2020-06-02 20:10:17 +02:00
parent b176481cdf
commit 5d94727ddd
15 changed files with 189 additions and 117 deletions

View 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);
}
});
}
}

View 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);
}
});
}
}

View file

@ -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 = [];

View file

@ -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';