1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2025-12-12 18:04:03 +00:00

[2.2.0] Tenant aware commands (#221)

* wip

* Apply fixes from StyleCI

* Return value when a single tenant is passed

* array map -> foreach

* bug fixes
This commit is contained in:
Samuel Štancl 2019-11-10 12:32:26 +01:00 committed by GitHub
parent 2b00665247
commit f34986b29f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 78 additions and 0 deletions

View file

@ -0,0 +1,29 @@
<?php
declare(strict_types=1);
namespace Stancl\Tenancy\Traits;
use Symfony\Component\Console\Input\InputArgument;
trait HasATenantArgument
{
protected function getArguments()
{
return array_merge([
['tenant', InputArgument::REQUIRED, 'Tenant id', null],
], parent::getArguments());
}
protected function getTenants(): array
{
return [tenancy()->find($this->argument('tenant'))];
}
public function __construct()
{
parent::__construct();
$this->specifyParameters();
}
}

View file

@ -14,4 +14,16 @@ trait HasATenantsOption
['tenants', null, InputOption::VALUE_IS_ARRAY | InputOption::VALUE_OPTIONAL, '', null],
], parent::getOptions());
}
protected function getTenants(): array
{
return tenancy()->all($this->option('tenants'))->all();
}
public function __construct()
{
parent::__construct();
$this->specifyParameters();
}
}

View file

@ -0,0 +1,37 @@
<?php
declare(strict_types=1);
namespace Stancl\Tenancy\Traits;
use Stancl\Tenancy\Tenant;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
trait TenantAwareCommand
{
/** @return mixed|void */
protected function execute(InputInterface $input, OutputInterface $output)
{
$tenants = $this->getTenants();
if (count($tenants) === 1) {
return $tenants[0]->run(function () {
return $this->laravel->call([$this, 'handle']);
});
}
foreach ($tenants as $tenant) {
$tenant->run(function () {
$this->laravel->call([$this, 'handle']);
});
}
}
/**
* Get an array of tenants for which the command should be executed.
*
* @return Tenant[]
*/
abstract protected function getTenants(): array;
}