1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2026-02-06 14:54:03 +00:00

Merge branch 'master' into stein-j-readied-tenant

This commit is contained in:
lukinovec 2022-09-28 09:48:24 +02:00
commit b56934674a
107 changed files with 976 additions and 734 deletions

View file

@ -10,7 +10,7 @@ trait BelongsToPrimaryModel
{
abstract public function getRelationshipToPrimaryModel(): string;
public static function bootBelongsToPrimaryModel()
public static function bootBelongsToPrimaryModel(): void
{
static::addGlobalScope(new ParentModelScope);
}

View file

@ -19,7 +19,7 @@ trait BelongsToTenant
return $this->belongsTo(config('tenancy.tenant_model'), BelongsToTenant::$tenantIdColumn);
}
public static function bootBelongsToTenant()
public static function bootBelongsToTenant(): void
{
static::addGlobalScope(new TenantScope);

View file

@ -6,7 +6,7 @@ namespace Stancl\Tenancy\Database\Concerns;
trait ConvertsDomainsToLowercase
{
public static function bootConvertsDomainsToLowercase()
public static function bootConvertsDomainsToLowercase(): void
{
static::saving(function ($model) {
$model->domain = strtolower($model->domain);

View file

@ -0,0 +1,24 @@
<?php
declare(strict_types=1);
namespace Stancl\Tenancy\Database\Concerns;
use Stancl\Tenancy\Database\Contracts\TenantWithDatabase;
trait CreatesDatabaseUsers
{
public function createDatabase(TenantWithDatabase $tenant): bool
{
parent::createDatabase($tenant);
return $this->createUser($tenant->database());
}
public function deleteDatabase(TenantWithDatabase $tenant): bool
{
parent::deleteDatabase($tenant);
return $this->deleteUser($tenant->database());
}
}

View file

@ -8,7 +8,7 @@ use Stancl\Tenancy\Exceptions\DomainOccupiedByOtherTenantException;
trait EnsuresDomainIsNotOccupied
{
public static function bootEnsuresDomainIsNotOccupied()
public static function bootEnsuresDomainIsNotOccupied(): void
{
static::saving(function ($self) {
if ($domain = $self->newQuery()->where('domain', $self->domain)->first()) {

View file

@ -8,7 +8,7 @@ use Stancl\Tenancy\Contracts\UniqueIdentifierGenerator;
trait GeneratesIds
{
public static function bootGeneratesIds()
public static function bootGeneratesIds(): void
{
static::creating(function (self $model) {
if (! $model->getKey() && $model->shouldGenerateId()) {

View file

@ -4,8 +4,8 @@ declare(strict_types=1);
namespace Stancl\Tenancy\Database\Concerns;
use Stancl\Tenancy\Contracts\TenantWithDatabase;
use Stancl\Tenancy\DatabaseConfig;
use Stancl\Tenancy\Database\Contracts\TenantWithDatabase;
use Stancl\Tenancy\Database\DatabaseConfig;
trait HasDatabase
{

View file

@ -2,6 +2,8 @@
declare(strict_types=1);
// todo not sure if this should be in Database\
namespace Stancl\Tenancy\Database\Concerns;
use Stancl\Tenancy\Contracts\Domain;

View file

@ -6,26 +6,20 @@ namespace Stancl\Tenancy\Database\Concerns;
trait HasInternalKeys
{
/**
* Get the internal prefix.
*/
/** Get the internal prefix. */
public static function internalPrefix(): string
{
return 'tenancy_';
}
/**
* Get an internal key.
*/
public function getInternal(string $key)
/** Get an internal key. */
public function getInternal(string $key): mixed
{
return $this->getAttribute(static::internalPrefix() . $key);
}
/**
* Set internal key.
*/
public function setInternal(string $key, $value)
/** Set internal key. */
public function setInternal(string $key, mixed $value): static
{
$this->setAttribute(static::internalPrefix() . $key, $value);

View file

@ -16,7 +16,7 @@ trait InvalidatesResolverCache
Resolvers\RequestDataTenantResolver::class,
];
public static function bootInvalidatesResolverCache()
public static function bootInvalidatesResolverCache(): void
{
static::saved(function (Tenant $tenant) {
foreach (static::$resolvers as $resolver) {

View file

@ -19,7 +19,7 @@ trait InvalidatesTenantsResolverCache
Resolvers\RequestDataTenantResolver::class,
];
public static function bootInvalidatesTenantsResolverCache()
public static function bootInvalidatesTenantsResolverCache(): void
{
static::saved(function (Model $model) {
foreach (static::$resolvers as $resolver) {

View file

@ -10,7 +10,7 @@ use Stancl\Tenancy\Events\SyncedResourceSaved;
trait ResourceSyncing
{
public static function bootResourceSyncing()
public static function bootResourceSyncing(): void
{
static::saved(function (Syncable $model) {
/** @var ResourceSyncing $model */
@ -27,7 +27,7 @@ trait ResourceSyncing
});
}
public function triggerSyncEvent()
public function triggerSyncEvent(): void
{
/** @var Syncable $this */
event(new SyncedResourceSaved($this, tenant()));

View file

@ -4,15 +4,17 @@ declare(strict_types=1);
namespace Stancl\Tenancy\Database\Concerns;
use Closure;
use Stancl\Tenancy\Contracts\Tenant;
trait TenantRun
{
/**
* Run a callback in this tenant's context.
* Atomic, safely reverts to previous context.
*
* This method is atomic and safely reverts to the previous context.
*/
public function run(callable $callback)
public function run(Closure $callback): mixed
{
/** @var Tenant $this */
$originalTenant = tenant();