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

Merge branch '1.x' into global-ns

This commit is contained in:
Samuel Štancl 2019-04-24 17:10:22 +02:00
commit 3c1f3731d9
9 changed files with 65 additions and 22 deletions

View file

@ -11,7 +11,7 @@ interface StorageDriver
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);
public function getMany(string $uuid, array $keys): array;
public function put(string $uuid, string $key, $value);
public function putMany(string $uuid, array $values); // todo better argument name than "values" for kv pairs?
public function putMany(string $uuid, array $values): array;
}

View file

@ -19,9 +19,8 @@ class QueuedTenantDatabaseCreator implements ShouldQueue
/**
* Create a new job instance.
*
* @param DatabaseCreator $databaseCreator
* @param TenantDatabaseManager $databaseManager
* @param string $databaseName
* @param string $action
* @return void
*/
public function __construct(TenantDatabaseManager $databaseManager, string $databaseName)
@ -37,6 +36,6 @@ class QueuedTenantDatabaseCreator implements ShouldQueue
*/
public function handle()
{
$this->databaseManager->createDatabase($databaseName);
$this->databaseManager->createDatabase($this->databaseName);
}
}

View file

@ -19,9 +19,8 @@ class QueuedTenantDatabaseDeleter implements ShouldQueue
/**
* Create a new job instance.
*
* @param DatabaseCreator $databaseCreator
* @param TenantDatabaseManager $databaseManager
* @param string $databaseName
* @param string $action
* @return void
*/
public function __construct(TenantDatabaseManager $databaseManager, string $databaseName)
@ -37,6 +36,6 @@ class QueuedTenantDatabaseDeleter implements ShouldQueue
*/
public function handle()
{
$this->databaseManager->deleteDatabase($databaseName);
$this->databaseManager->deleteDatabase($this->databaseName);
}
}

View file

@ -25,13 +25,7 @@ class InitializeTenancy
try {
\tenancy()->init();
} catch (\Exception $e) {
// Pass the exception to the onFail function if it takes any parameters.
$callback = $this->onFail;
if ((new \ReflectionFunction($callback))->getNumberOfParameters() > 0) {
$callback($e);
} else {
$callback();
}
($this->onFail)($e);
}
return $next($request);

View file

@ -71,9 +71,20 @@ class RedisStorageDriver implements StorageDriver
return "tenants:{$hash}";
}, $uuids);
$hashes = $hashes ?: $this->redis->scan(null, 'tenants:*');
// Apparently, the PREFIX is applied to all functions except scan()
$redis_prefix = $this->redis->getOption($this->redis->client()::OPT_PREFIX);
$hashes = $hashes ?: $this->redis->scan(null, $redis_prefix.'tenants:*');
return array_map(function ($tenant) use ($redis_prefix) {
// Left strip $redis_prefix from $tenant
if (substr($tenant, 0, strlen($redis_prefix)) == $redis_prefix) {
$tenant = substr($tenant, strlen($redis_prefix));
}
<<<<<<< HEAD
return \array_map(function ($tenant) {
=======
>>>>>>> 1.x
return $this->redis->hgetall($tenant);
}, $hashes);
}
@ -83,7 +94,7 @@ class RedisStorageDriver implements StorageDriver
return $this->redis->hget("tenants:$uuid", $key);
}
public function getMany(string $uuid, array $keys)
public function getMany(string $uuid, array $keys): array
{
return $this->redis->hmget("tenants:$uuid", $keys);
}
@ -94,7 +105,7 @@ class RedisStorageDriver implements StorageDriver
return $value;
}
public function putMany(string $uuid, array $values)
public function putMany(string $uuid, array $values): array
{
$this->redis->hmset("tenants:$uuid", $values);
return $values;

View file

@ -77,7 +77,7 @@ class TenantManager
throw new \Exception("Domain $domain is already occupied by tenant $id.");
}
$tenant = $this->jsonDecodeArrayValues($this->storage->createTenant($domain, \Webpatser\Uuid\Uuid::generate(1, $domain)));
$tenant = $this->jsonDecodeArrayValues($this->storage->createTenant($domain, (string) \Webpatser\Uuid\Uuid::generate(1, $domain)));
$this->database->create($this->getDatabaseName($tenant));
return $tenant;
@ -201,7 +201,7 @@ class TenantManager
*/
public function all($uuids = [])
{
$uuid = (array) $uuids;
$uuids = (array) $uuids;
return \collect(\array_map(function ($tenant_array) {
return $this->jsonDecodeArrayValues($tenant_array);