mirror of
https://github.com/archtechx/tenancy.git
synced 2025-12-12 18:04:03 +00:00
Apply fixes from StyleCI (#80)
This commit is contained in:
parent
bd6583b6af
commit
eceacd9422
25 changed files with 83 additions and 70 deletions
|
|
@ -10,7 +10,7 @@ class CacheManager extends BaseCacheManager
|
|||
{
|
||||
$tags = [config('tenancy.cache.tag_base') . tenant('uuid')];
|
||||
|
||||
if ($method === "tags") {
|
||||
if ($method === 'tags') {
|
||||
if (\count($parameters) !== 1) {
|
||||
throw new \Exception("Method tags() takes exactly 1 argument. {count($parameters)} passed.");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ class TenantList extends Command
|
|||
*/
|
||||
public function handle()
|
||||
{
|
||||
$this->info("Listing all tenants.");
|
||||
$this->info('Listing all tenants.');
|
||||
tenancy()->all()->each(function ($tenant) {
|
||||
$this->line("[Tenant] uuid: {$tenant['uuid']} @ {$tenant['domain']}");
|
||||
});
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ class DatabaseManager
|
|||
|
||||
public function getDriver(): ?string
|
||||
{
|
||||
return config("database.connections.tenant.driver");
|
||||
return config('database.connections.tenant.driver');
|
||||
}
|
||||
|
||||
public function createTenantConnection(string $database_name)
|
||||
|
|
@ -98,11 +98,11 @@ class DatabaseManager
|
|||
// Create the `tenancy` database connection.
|
||||
$based_on = config('tenancy.database.based_on') ?: config('database.default');
|
||||
config()->set([
|
||||
'database.connections.tenant' => config('database.connections.' . $based_on)
|
||||
'database.connections.tenant' => config('database.connections.' . $based_on),
|
||||
]);
|
||||
|
||||
// Change DB name
|
||||
$database_name = $this->getDriver() === "sqlite" ? database_path($database_name) : $database_name;
|
||||
$database_name = $this->getDriver() === 'sqlite' ? database_path($database_name) : $database_name;
|
||||
config()->set(['database.connections.tenant.database' => $database_name]);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,4 +10,4 @@ class GlobalCacheFacade extends Facade
|
|||
{
|
||||
return 'globalCache';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,13 +5,22 @@ namespace Stancl\Tenancy\Interfaces;
|
|||
interface StorageDriver
|
||||
{
|
||||
public function identifyTenant(string $domain): array;
|
||||
|
||||
public function getAllTenants(array $uuids = []): array;
|
||||
|
||||
public function getTenantById(string $uuid, array $fields = []): array;
|
||||
|
||||
public function getTenantIdByDomain(string $domain): ?string;
|
||||
|
||||
public function createTenant(string $domain, string $uuid): array;
|
||||
|
||||
public function deleteTenant(string $uuid): bool;
|
||||
|
||||
public function get(string $uuid, string $key);
|
||||
|
||||
public function getMany(string $uuid, array $keys): array;
|
||||
|
||||
public function put(string $uuid, string $key, $value);
|
||||
|
||||
public function putMany(string $uuid, array $values): array;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ interface TenantDatabaseManager
|
|||
* Create a database.
|
||||
*
|
||||
* @param string $name Name of the database.
|
||||
* @return boolean
|
||||
* @return bool
|
||||
*/
|
||||
public function createDatabase(string $name): bool;
|
||||
|
||||
|
|
@ -16,7 +16,7 @@ interface TenantDatabaseManager
|
|||
* Delete a database.
|
||||
*
|
||||
* @param string $name Name of the database.
|
||||
* @return boolean
|
||||
* @return bool
|
||||
*/
|
||||
public function deleteDatabase(string $name): bool;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ namespace Stancl\Tenancy\Jobs;
|
|||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Stancl\Tenancy\Interfaces\TenantDatabaseManager;
|
||||
|
||||
class QueuedTenantDatabaseCreator implements ShouldQueue
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ namespace Stancl\Tenancy\Jobs;
|
|||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Stancl\Tenancy\Interfaces\TenantDatabaseManager;
|
||||
|
||||
class QueuedTenantDatabaseDeleter implements ShouldQueue
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ class RedisStorageDriver implements StorageDriver
|
|||
if (! $id) {
|
||||
throw new \Exception("Tenant could not be identified on domain {$domain}");
|
||||
}
|
||||
|
||||
return $this->getTenantById($id);
|
||||
}
|
||||
|
||||
|
|
@ -33,7 +34,7 @@ class RedisStorageDriver implements StorageDriver
|
|||
public function getTenantById(string $uuid, array $fields = []): array
|
||||
{
|
||||
$fields = (array) $fields;
|
||||
|
||||
|
||||
if (! $fields) {
|
||||
return $this->redis->hgetall("tenants:$uuid");
|
||||
}
|
||||
|
|
@ -50,14 +51,15 @@ class RedisStorageDriver implements StorageDriver
|
|||
{
|
||||
$this->redis->hmset("domains:$domain", 'tenant_id', $uuid);
|
||||
$this->redis->hmset("tenants:$uuid", 'uuid', json_encode($uuid), 'domain', json_encode($domain));
|
||||
|
||||
return $this->redis->hgetall("tenants:$uuid");
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* {@inheritdoc}
|
||||
*
|
||||
* @param string $id
|
||||
* @return boolean
|
||||
* @return bool
|
||||
* @todo Make tenant & domain deletion atomic.
|
||||
*/
|
||||
public function deleteTenant(string $id): bool
|
||||
|
|
@ -69,6 +71,7 @@ class RedisStorageDriver implements StorageDriver
|
|||
}
|
||||
|
||||
$this->redis->del("domains:$domain");
|
||||
|
||||
return (bool) $this->redis->del("tenants:$id");
|
||||
}
|
||||
|
||||
|
|
@ -91,7 +94,7 @@ class RedisStorageDriver implements StorageDriver
|
|||
return substr($hash, strlen($redis_prefix));
|
||||
}, $this->redis->scan(null, $redis_prefix.'tenants:*'));
|
||||
}
|
||||
|
||||
|
||||
return array_map(function ($tenant) {
|
||||
return $this->redis->hgetall($tenant);
|
||||
}, $hashes);
|
||||
|
|
@ -110,12 +113,14 @@ class RedisStorageDriver implements StorageDriver
|
|||
public function put(string $uuid, string $key, $value)
|
||||
{
|
||||
$this->redis->hset("tenants:$uuid", $key, $value);
|
||||
|
||||
return $value;
|
||||
}
|
||||
|
||||
public function putMany(string $uuid, array $values): array
|
||||
{
|
||||
$this->redis->hmset("tenants:$uuid", $values);
|
||||
|
||||
return $values;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,16 +3,14 @@
|
|||
namespace Stancl\Tenancy;
|
||||
|
||||
use Stancl\Tenancy\Commands\Seed;
|
||||
use Stancl\Tenancy\TenantManager;
|
||||
use Stancl\Tenancy\DatabaseManager;
|
||||
use Illuminate\Cache\CacheManager;
|
||||
use Stancl\Tenancy\Commands\Migrate;
|
||||
use Stancl\Tenancy\Commands\Rollback;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use Stancl\Tenancy\Commands\Rollback;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Stancl\Tenancy\Commands\TenantList;
|
||||
use Stancl\Tenancy\Interfaces\StorageDriver;
|
||||
use Stancl\Tenancy\Interfaces\ServerConfigManager;
|
||||
use Illuminate\Cache\CacheManager;
|
||||
|
||||
class TenancyServiceProvider extends ServiceProvider
|
||||
{
|
||||
|
|
@ -39,7 +37,7 @@ class TenancyServiceProvider extends ServiceProvider
|
|||
$this->loadRoutesFrom(__DIR__ . '/routes.php');
|
||||
|
||||
Route::middlewareGroup('tenancy', [
|
||||
\Stancl\Tenancy\Middleware\InitializeTenancy::class
|
||||
\Stancl\Tenancy\Middleware\InitializeTenancy::class,
|
||||
]);
|
||||
|
||||
$this->app->register(TenantRouteServiceProvider::class);
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ class TenantManager
|
|||
* @var StorageDriver
|
||||
*/
|
||||
protected $storage;
|
||||
|
||||
|
||||
/**
|
||||
* Database manager.
|
||||
*
|
||||
|
|
@ -49,6 +49,7 @@ class TenantManager
|
|||
{
|
||||
$this->setTenant($this->identify($domain));
|
||||
$this->bootstrap();
|
||||
|
||||
return $this->tenant;
|
||||
}
|
||||
|
||||
|
|
@ -57,7 +58,7 @@ class TenantManager
|
|||
$domain = $domain ?: $this->currentDomain();
|
||||
|
||||
if (! $domain) {
|
||||
throw new \Exception("No domain supplied nor detected.");
|
||||
throw new \Exception('No domain supplied nor detected.');
|
||||
}
|
||||
|
||||
$tenant = $this->storage->identifyTenant($domain);
|
||||
|
|
@ -79,7 +80,7 @@ class TenantManager
|
|||
|
||||
$tenant = $this->jsonDecodeArrayValues($this->storage->createTenant($domain, (string) \Webpatser\Uuid\Uuid::generate(1, $domain)));
|
||||
$this->database->create($this->getDatabaseName($tenant));
|
||||
|
||||
|
||||
return $tenant;
|
||||
}
|
||||
|
||||
|
|
@ -98,6 +99,7 @@ class TenantManager
|
|||
public function getTenantById(string $uuid, $fields = [])
|
||||
{
|
||||
$fields = (array) $fields;
|
||||
|
||||
return $this->jsonDecodeArrayValues($this->storage->getTenantById($uuid, $fields));
|
||||
}
|
||||
|
||||
|
|
@ -165,6 +167,7 @@ class TenantManager
|
|||
public function getDatabaseName($tenant = []): string
|
||||
{
|
||||
$tenant = $tenant ?: $this->tenant;
|
||||
|
||||
return $this->app['config']['tenancy.database.prefix'] . $tenant['uuid'] . $this->app['config']['tenancy.database.suffix'];
|
||||
}
|
||||
|
||||
|
|
@ -179,7 +182,7 @@ class TenantManager
|
|||
$tenant = $this->jsonDecodeArrayValues($tenant);
|
||||
|
||||
$this->tenant = $tenant;
|
||||
|
||||
|
||||
return $tenant;
|
||||
}
|
||||
|
||||
|
|
@ -219,6 +222,7 @@ class TenantManager
|
|||
{
|
||||
$this->setTenant($this->storage->getTenantById($uuid));
|
||||
$this->bootstrap();
|
||||
|
||||
return $this->tenant;
|
||||
}
|
||||
|
||||
|
|
@ -252,9 +256,9 @@ class TenantManager
|
|||
{
|
||||
if (\is_null($uuid)) {
|
||||
if (! isset($this->tenant['uuid'])) {
|
||||
throw new \Exception("No UUID supplied (and no tenant is currently identified).");
|
||||
throw new \Exception('No UUID supplied (and no tenant is currently identified).');
|
||||
}
|
||||
|
||||
|
||||
$uuid = $this->tenant['uuid'];
|
||||
|
||||
// If $uuid is the uuid of the current tenant, put
|
||||
|
|
@ -313,7 +317,7 @@ class TenantManager
|
|||
if (\is_null($attribute)) {
|
||||
return $this->tenant;
|
||||
}
|
||||
|
||||
|
||||
return $this->tenant[(string) $attribute];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ trait BootstrapsTenancy
|
|||
/**
|
||||
* Was tenancy initialized/bootstrapped?
|
||||
*
|
||||
* @var boolean
|
||||
* @var bool
|
||||
*/
|
||||
public $initialized = false;
|
||||
|
||||
|
|
@ -53,7 +53,7 @@ trait BootstrapsTenancy
|
|||
foreach ($connections as $connection) {
|
||||
$prefix = $this->app['config']['tenancy.redis.prefix_base'] . $this->tenant['uuid'];
|
||||
$client = Redis::connection($connection)->client();
|
||||
|
||||
|
||||
try {
|
||||
$this->originalSettings['redis'][$connection] = $client->getOption($client::OPT_PREFIX);
|
||||
$client->setOption($client::OPT_PREFIX, $prefix);
|
||||
|
|
@ -67,7 +67,7 @@ trait BootstrapsTenancy
|
|||
{
|
||||
foreach ($connections as $connection) {
|
||||
$client = Redis::connection($connection)->client();
|
||||
|
||||
|
||||
try {
|
||||
$client->setOption($client::OPT_PREFIX, $this->originalSettings['redis'][$connection]);
|
||||
} catch (\Throwable $t) {
|
||||
|
|
@ -106,12 +106,12 @@ trait BootstrapsTenancy
|
|||
// Storage facade
|
||||
foreach ($this->app['config']['tenancy.filesystem.disks'] as $disk) {
|
||||
$old['disks'][$disk] = Storage::disk($disk)->getAdapter()->getPathPrefix();
|
||||
|
||||
|
||||
if ($root = str_replace('%storage_path%', storage_path(), $this->app['config']["tenancy.filesystem.root_override.{$disk}"])) {
|
||||
Storage::disk($disk)->getAdapter()->setPathPrefix($root);
|
||||
} else {
|
||||
$root = $this->app['config']["filesystems.disks.{$disk}.root"];
|
||||
|
||||
|
||||
Storage::disk($disk)->getAdapter()->setPathPrefix($root . "/{$suffix}");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ trait HasATenantsOption
|
|||
protected function getOptions()
|
||||
{
|
||||
return array_merge([
|
||||
['tenants', null, InputOption::VALUE_IS_ARRAY | InputOption::VALUE_OPTIONAL, '', null]
|
||||
['tenants', null, InputOption::VALUE_IS_ARRAY | InputOption::VALUE_OPTIONAL, '', null],
|
||||
], parent::getOptions());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue