mirror of
https://github.com/archtechx/tenancy.git
synced 2025-12-12 21:54:03 +00:00
Refactor more old code and get tests to pass
This commit is contained in:
parent
c5377a16f7
commit
c32f229dd5
72 changed files with 425 additions and 531 deletions
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Stancl\Tenancy\Database\Models\Concerns;
|
||||
namespace Stancl\Tenancy\Database\Concerns;
|
||||
|
||||
trait CentralConnection
|
||||
{
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Stancl\Tenancy\Database\Models\Concerns;
|
||||
namespace Stancl\Tenancy\Database\Concerns;
|
||||
|
||||
use Stancl\Tenancy\Contracts\UniqueIdentifierGenerator;
|
||||
|
||||
|
|
@ -14,4 +14,9 @@ trait GeneratesIds
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
public function getIncrementing()
|
||||
{
|
||||
return ! app()->bound(UniqueIdentifierGenerator::class);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,9 +1,7 @@
|
|||
<?php
|
||||
|
||||
// todo move namespace one dir above
|
||||
namespace Stancl\Tenancy\Database\Models\Concerns;
|
||||
namespace Stancl\Tenancy\Database\Concerns;
|
||||
|
||||
// todo rename
|
||||
trait HasADataColumn
|
||||
{
|
||||
public static $priorityListeners = [];
|
||||
|
|
@ -53,11 +51,17 @@ trait HasADataColumn
|
|||
$model->dataEncodingStatus = 'decoded';
|
||||
};
|
||||
|
||||
static::registerPriorityListener('retrieved', $decode);
|
||||
static::registerPriorityListener('retrieved', function ($model) use ($decode) {
|
||||
// We always decode after model retrieval.
|
||||
$model->dataEncodingStatus = 'encoded';
|
||||
|
||||
$decode($model);
|
||||
});
|
||||
|
||||
static::registerPriorityListener('saving', $encode);
|
||||
static::registerPriorityListener('creating', $encode);
|
||||
static::registerPriorityListener('updating', $encode);
|
||||
|
||||
static::registerPriorityListener('saved', $decode);
|
||||
static::registerPriorityListener('created', $decode);
|
||||
static::registerPriorityListener('updated', $decode);
|
||||
16
src/Database/Concerns/HasDomains.php
Normal file
16
src/Database/Concerns/HasDomains.php
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<?php
|
||||
|
||||
namespace Stancl\Tenancy\Database\Concerns;
|
||||
|
||||
use Stancl\Tenancy\Contracts\Domain;
|
||||
|
||||
/**
|
||||
* @property-read Domain[] $domains
|
||||
*/
|
||||
trait HasDomains
|
||||
{
|
||||
public function domains()
|
||||
{
|
||||
return $this->hasMany(config('tenancy.domain_model'), 'tenant_id');
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Stancl\Tenancy\Database\Models\Concerns;
|
||||
namespace Stancl\Tenancy\Database\Concerns;
|
||||
|
||||
/**
|
||||
* @property-read string $primary_domain_hostname
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Stancl\Tenancy\Database\Models\Concerns;
|
||||
namespace Stancl\Tenancy\Database\Concerns;
|
||||
|
||||
use Stancl\Tenancy\Contracts\Syncable;
|
||||
use Stancl\Tenancy\Contracts\UniqueIdentifierGenerator;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Stancl\Tenancy\Database\Models\Concerns;
|
||||
namespace Stancl\Tenancy\Database\Concerns;
|
||||
|
||||
trait TenantConnection
|
||||
{
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace Stancl\Tenancy\Database\Models\Concerns;
|
||||
|
||||
trait HasDomains
|
||||
{
|
||||
public function domains()
|
||||
{
|
||||
return $this->hasMany(config('tenancy.domain_model'));
|
||||
}
|
||||
}
|
||||
|
|
@ -2,18 +2,30 @@
|
|||
|
||||
namespace Stancl\Tenancy\Database\Models;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Stancl\Tenancy\DatabaseConfig;
|
||||
use Stancl\Tenancy\Events;
|
||||
use Stancl\Tenancy\Contracts;
|
||||
use Stancl\Tenancy\Database\Concerns;
|
||||
|
||||
// todo @property
|
||||
class Tenant extends Model implements Contracts\TenantWithDatabase
|
||||
/**
|
||||
* @property string|int $id
|
||||
* @property Carbon $created_at
|
||||
* @property Carbon $updated_at
|
||||
* @property array $data
|
||||
*/
|
||||
class Tenant extends Model implements Contracts\TenantWithDatabase // todo base model that isn't TenantWithDatabase & domains
|
||||
{
|
||||
use Concerns\CentralConnection, Concerns\HasADataColumn, Concerns\GeneratesIds, Concerns\HasADataColumn {
|
||||
use Concerns\CentralConnection,
|
||||
Concerns\HasADataColumn,
|
||||
Concerns\GeneratesIds,
|
||||
Concerns\HasADataColumn,
|
||||
Concerns\HasDomains {
|
||||
Concerns\HasADataColumn::getCasts as dataColumnCasts;
|
||||
}
|
||||
|
||||
protected $table = 'tenants';
|
||||
public $primaryKey = 'id';
|
||||
public $guarded = [];
|
||||
|
||||
|
|
@ -34,11 +46,6 @@ class Tenant extends Model implements Contracts\TenantWithDatabase
|
|||
]);
|
||||
}
|
||||
|
||||
public function getIncrementing()
|
||||
{
|
||||
return config('tenancy.id_generator') === null;
|
||||
}
|
||||
|
||||
public static function internalPrefix(): string
|
||||
{
|
||||
return config('tenancy.internal_prefix');
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue